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