我是 C++ 的新手。如果这个问题重复,我很抱歉,但我找不到类似的问题。
非常基本的代码:
string s;
while (cin >> s)
cout << s << endl;
Run Code Online (Sandbox Code Playgroud)
当我按下键盘上的返回键时,我希望循环停止。但它永远不会停止......
我知道cin在遇到无效输入时会返回false,例如如果我们使用
int i;
while (cin >> i)
cout << i << endl;
Run Code Online (Sandbox Code Playgroud)
然后当我们输入一个非整数时循环结束。
但是在字符串的情况下,我们如何停止该循环?
while (cin >> s) { ... }只要输入有效,就会循环。当尝试输入失败时,它将退出循环。
失败有两种可能的原因:
假设输入本身是有效的,为了终止循环,输入流必须到达终点。
当输入实际上是一个文件时,识别结尾很容易:当它用完字符时,它位于文件的末尾。当它是控制台时,就不是那么容易了:你必须做一些人为的事情来指示输入的结束。
这样做,你必须告诉终端应用程序(控制控制台)没有更多的输入,而终端应用程序反过来会告诉你的程序它在输入的末尾。
您这样做的方式取决于终端应用程序,它通常是操作系统的一部分。