【C++】读取数量不定的输入数据

读取数量不定的输入数据

似乎是一个很实用的东西?

问题:

我们如何对用户输入的一组数(事先不知道具体有多少个数)求和?

这需要不断读取数据直至没有新的输入为止。(所以我们的代码就是这样设计的,让它能一直读取数据直到没有新输入,再求和)

代码参考:

cpp 复制代码
#include<iostream>

int main()
{
	int sum = 0, value = 0;
	
	while (std::cin >> value)
		sum+=value;

	std::cout << sum << std::endl;

	return 0;
}

我们只用一个while(std::cin>>value)就解决了这个问题。

解释:

输入运算符>>,接受一个istream作为其左侧运算对象,接受一个对象作为其右侧运算对象。

它从给定的istream读入数据,并存入给定对象中

++它将返回其左侧运算对象作为其计算结果++。

也就是说std::cin>>value返回的是std::cin

(重点:)当使用一个istream对象作为条件时,其效果是检测流的状态

如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符(end-of-file),或遇到一个无效输入时(例如读入的值不是一个整数),istream对象的状态会变为无效。处于无效状态的istream对象会使条件变为假。

因此,我们的while循环会一直执行直至遇到文件结束符(或输入错误)。

从键盘输入文件结束符

那么,我们怎样才能达到输入停止的效果呢?这当然也很重要。

++当从键盘向程序输入数据时++,对于如何指出文件结束,不同操作系统有不同的约定。

在Windows系统中,输入文件结束符的方法是Ctrl+Z(按住Ctrl的同时按Z键),然后按Enter。

在UNIX系统中,包括Mac OS X系统中,文件结束符输入是用Ctrl+D。

这只是一个简单的例子,这种读取数量不定的输入数据的方式可以用在更复杂的程序中,很有用。

相关推荐
Yeniden17 分钟前
Deepeek用大白话讲解 --> 迭代器模式(企业级场景1,多种遍历方式2,隐藏集合结构3,Java集合框架4)
java·开发语言·迭代器模式
UVM_ERROR18 分钟前
RDMA Scheduler + TX + Completion RTL 开发经验分享
笔记·vscode·ssh·github·芯片
SmoothSailingT26 分钟前
C#——LINQ方法
开发语言·c#·linq
景川呀26 分钟前
Java的类加载器
java·开发语言·java类加载器
黑客思维者29 分钟前
机器学习003:无监督学习(概论)--机器如何学会“自己整理房间”
人工智能·学习·机器学习·无监督学习
k***921630 分钟前
Python 科学计算有哪些提高运算速度的技巧
开发语言·python
superman超哥30 分钟前
仓颉条件变量深度解析与实践:解锁高效并发同步
开发语言·python·c#·仓颉
Vizio<35 分钟前
STM32HAL库开发笔记-GPIO输入
笔记·stm32·单片机·嵌入式硬件
chinalihuanyu37 分钟前
蓝牙开发笔记(BlueTooth,BLE,CH592)
笔记
其美杰布-富贵-李39 分钟前
tsai 中 Learner 机制深度学习笔记
人工智能·笔记·深度学习