我有这段代码:
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
有人可以解释一下吗?
答案 0 :(得分:2)
第一个例子包括你的输入。
输入
12
输出
12
13
对于作为输入接收的4个数字中的每一个,第二个例子就是这个,乘以4倍。分隔符是“空格” - 空格,新行或制表符。它不是“非整数”,而是“四个整数”:
输入:
12 12 12 12
相当于
12
12
12
12
输出:
12
13
12
13
12
13
12
13
答案 1 :(得分:0)
只有在您点击“输入”后,循环才会读取输入内容。所以在第一种情况下,它读取一个值12,打印12然后打印13以获取temp中的更新值,然后返回等待您键入更多数字。
在第二种情况下,它读取12,打印12&amp; 13,然后回去,读另外12,打印12&amp; 13,等等2次。然后返回等待您输入更多数据。
请注意,空格是输入的正确分隔符。如果你想要它出错,尝试输入12a,在这种情况下它将打印12&amp; 13永远(好吧,直到你感到无聊并停止它),因为它会在'a'处“停止阅读”而不更新obj
- 因为循环中的任何内容都不会清除a
,继续前进。
答案 2 :(得分:0)
添加空格时,会将它们作为单独的值。并为每个人运行while循环。
答案 3 :(得分:0)
int obj;
cin >> obj;
cin
从输入中读取有效的整数数据,直到找到不属于整数的字符,或者没有更多数据。在您的第一个示例中,cin命中输入的结尾并返回数字。在第二个示例中,cin从字符串"12 12 12 12"
读取输入,从输入流中提取第一个整数并将其写入obj
。在你的while循环的下一次运行中,cin面对字符串"12 12 12"
(因为它已经从输入流中提取/删除了第一个数字),故事继续进行,直到没有更多的输入要读取。< / p>