c++ while(cin>>s) 什么时候停止

标签 c++

我是 C++ 新手。如果这个问题重复,我很抱歉,但我找不到类似的问题。

非常基本的代码:

string s;
while (cin >> s)
    cout << s << endl;

当我按下键盘上的回车键时,我希望循环停止。 但它永远不会停止....

我知道cin在遇到无效输入时会返回false,比如我们使用

int i;
while (cin >> i)
    cout << i << endl;

然后当我们输入一个非整数时循环结束。

但是对于字符串,我们如何才能停止该循环?

最佳答案

while (cin >> s) { ... } 只要输入有效就会循环。当尝试输入失败时,它将退出循环。

失败的可能原因有两种:

  1. 输入无效
  2. 文件结束

假设输入本身是有效的,为了终止循环,输入流必须到达终点。

当输入实际上是一个文件时,识别结尾很容易:当它用完所有字符时,它就在文件末尾。当它是控制台时,就没那么容易了:您必须人为地做一些事情来指示输入结束。

这样做,您必须告诉终端应用程序(它控制控制台)没有更多的输入,而终端应用程序反过来会告诉您的程序它在输入的末尾。

执行此操作的方式取决于终端应用程序,它通常是操作系统的一部分。

  • Windows 上,ctrl-Z 告诉终端应用程序您已完成输入。
  • Unix 系统 上,它是ctrl-D

关于c++ while(cin>>s) 什么时候停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50999994/

相关文章:

c++ - 有没有解决 nullptr_t 和指针重载之间歧义的好方法?

c++ - 显式特化成员类的成员类的外部定义

c++ - 具有已定义宏的 iOS 预处理条件导致 "token is not valid"

c++ - 二项式随机数生成

开源项目中的 C++ 类设计模式

c++ - 在 C++11 中返回右值引用或临时对象

c++ - 查找 vector 是否为子 vector C++

c++ - rep(x, each=3) 相当于 Armadillo

c++ - 从 map-C++ 中检索字符串时出现逻辑错误

c++ - #ifdef/#ifndef 和#endif