通过控制台传递非整数输入
Passing non integer input through console
我有这个代码:
int obj;
while ( std::cin >> obj )
{
std::cout << obj << std::endl ;
int temp = obj ;
++ temp;
std::cout << temp << std::endl ;
}
当我给出正确的整数输入时,我就能理解输出。
例如。如果我得到12作为输入,我会在控制台上看到这样的东西:
12
12
13
但是,如果我给出一些带有空格的整数作为输入,我似乎无法理解输出。
例如。如果我给出12 12 12 12作为输入,我会在控制台上看到:
12 12 12 12
12
13
12
13
12
13
12
13
有人能解释一下吗?
第一个例子包括您的输入。
输入
12
输出
12
13
第二个例子正是这样,对于作为输入接收的4个数字中的每一个,乘以4倍。分隔符是"空白"——空格、新行或制表符。它不是"非整数",而是"四个整数":
输入:
12 12 12 12
相当于
12
12
12
12
输出:
12
13
12
13
12
13
12
13
只有在您点击"回车"后,循环才会读取任何输入。因此,在第一种情况下,它读取一个值12,打印12,然后打印13作为temp中的更新值,然后返回等待您键入更多数字。
在第二种情况下,它读取12,打印12&13,然后返回,读取另一个12,打印12&13等等再重复2次。然后返回,等待您键入更多数据。
请注意,空白是输入的适当分隔符。如果你想让它出错,试着键入12a,在这种情况下,它会打印12&13永远(好吧,直到你感到无聊并停止它),因为它会在"a"处"停止阅读"而不更新obj
——而且因为循环中没有任何东西清除a
,所以它会继续。
添加空格时,会将它们作为单独的值。并为它们中的每一个运行while循环。
int obj;
cin >> obj;
cin
从您的输入中读取有效的整数数据,直到它找到一个不属于整数的字符,或者没有更多的数据。在您的第一个例子中,cin点击输入的末尾并返回数字。在第二个示例中,cin从字符串"12 12 12 12"
中读取输入,从输入流中提取第一个整数并将其写入obj
。在while循环的下一次运行中,cin将遇到字符串"12 12 12"
(因为它已经从输入流中提取/删除了第一个数字),故事将继续,直到没有更多的输入可供读取。
- 正在验证c++中用户的整数输入
- 如何用字符终止整数输入循环?
- 以C++为单位将已知数量的整数输入正确读取到向量中
- C++ - 重复 std::getline() 作为用户整数输入?
- C++程序,将整数输入转换为字符的问题
- 将整数输入数组的方法比 scanf() 或 cin 更快?
- 程序终止,而不是继续整数输入验证循环
- 如何在C 中输入未知数的整数输入
- 在C 中遇到了如何从用户输入直到输入的整数输入
- C++ 通过 range for 循环将整数输入到矢量中;随机 0
- 如何在 C++ 中包含整数输入的前面的 0
- 仅接受整数输入
- 拒绝用户整数输入 c++ 中的某个值
- 我想通过scanf将字符和整数输入到结构中
- 此代码段如何验证整数输入
- 验证整数输入C++?
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 整数输入 拒绝非整数输入并在C++中请求另一个输入
- 如何保存用户的整数输入,并返回字符串值?
- 除 "6" 作为最右边数字的整数输入外,任何整数输入都可以使用,但任何数字(如 ...6.导致分段错误,为什么?