当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
How does cin works in a while loop when the inputs are given in a single line with white spaces?
考虑这一小段代码:
#include <iostream>
#include<stdio.h>
using namespace std;
int main() {
int a;
while(true){
cin>>a;
cout<<a;
}
return 0;
}
输入
1 2 3 5 7 23
输出
125723
我认为它将如何运行:
第一次迭代1。读取第一个输入,即"1",并在读取空格后立即停止进一步读取。
2.打印值 1。
第二次迭代
1.再次要求新输入
2。在第二行
打印它 但这不会发生,而是读取我们在空格后给出的元素
第一次迭代:
- 查看流中的下一个字符。这是一个数字(
'1'
(,所以请阅读它。 - 查看流中的下一个字符。它不是数字(
' '
(,所以不要阅读它;将1
存放在a
,并从>>
返回。
(输出1
.(
第二次迭代:
- 查看流中的下一个字符。它是空格(
' '
(,所以请阅读并忽略它。 - 查看流中的下一个字符。这是一个数字(
'2'
(,所以请阅读它。 - 查看流中的下一个字符。它不是数字(
' '
(,所以不要阅读它;将2
存放在a
并从>>
返回。
(输出2
。
等等...
关键是>>
不在乎台词。cin
是一个长字符输入流(其中一些可能是'n'
(。你唯一能做的就是阅读更多的字符(然后也许决定你不想对它们做任何事情(。
cin
不一定连接到键盘。启动你的程序可以决定cin
从哪里读取。它可以是文件、网络套接字或交互式用户输入。在后一种情况下,从cin
读取可能会阻止,直到用户键入更多输入,但它永远不会导致输入被丢弃。
如果你想要一个理智的用户界面,请始终阅读整行并在之后处理它们:
std::string line;
while (std::getline(std::cin, line)) {
// do stuff with line
}
相关文章:
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- 如果 (cin) { while(cin) ..工程?
- while(cin)到底是什么意思
- C++ cin.ignore and getline in while loop
- C++ if(cin>>input) 在 while 循环中无法正常工作
- 如何在条件表达式中使用 'cin' 正确退出 while 循环?(C++,CLion)
- cin在while循环内
- C++ cin.fail() while loop
- C++使用cin.get来获取一个字符,但在遇到EOF时不会结束while循环
- C++,cin,直到使用while循环在线上不再有输入为止
- 如何让程序知道当我使用 while(cin>> 时文件结束
- 在python中,while(cin >> var)的等价物是什么?
- Error with while(cin)
- 我想知道什么是While(cin)测试
- while(cin)循环双显示
- Tantamount of while(cin>>something){some task ;} in java?
- C++ while(cin >> x){} vs. while(true) {cin >>x;}
- 退出带有回车符的 while(cin >> s) 循环