c ++ while(cin>>s)何时停止

Ziq*_*Liu 6 c++

我是 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)

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

但是在字符串的情况下,我们如何停止该循环?

Pet*_*ker 7

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

失败有两种可能的原因:

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

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

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

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

您这样做的方式取决于终端应用程序,它通常是操作系统的一部分。

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