C ++何时停止(cin >> s)

时间:2018-06-23 09:56:28

标签: c++

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

非常基本的代码:

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

我希望在按下键盘上的Return键时循环停止。 但是它永远不会停止。...

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

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

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

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

2 个答案:

答案 0 :(得分:3)

只要输入有效,

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

有两个可能的失败原因:

  1. 无效输入
  2. 文件尾

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

当输入实际上是一个文件时,识别结尾很容易:当字符用完时,它位于文件的结尾。当它是控制台时,并不是那么容易:您必须做些人工操作来指示输入的结束。

这样做,您必须告诉终端应用程序(控制控制台)没有更多输入,然后终端应用程序将告诉您的程序它在输入的结尾。

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

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

答案 1 :(得分:1)

您可以向EOF发出信号 通过 CTRL-D CTRL-Z

或者,您可以检查特定的字符串来中断循环,如下所示:

string s;
while (cin >> s)
  {
     if(s == "end")
          break;
     cout << s << endl;
  }