簡體   English   中英

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

[英]c++ when will while(cin>>s) stop

我是C ++的新手。 很抱歉,如果重復此問題,但我找不到類似的問題。

非常基本的代碼:

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

當我按下鍵盤上的return鍵時,我希望循環停止。 但是它永遠不會停止。

我知道cin在遇到無效輸入時會返回false,例如,如果我們使用

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

然后當我們輸入非整數時循環結束。

但是在字符串的情況下,如何停止該循環?

while (cin >> s) { ... }將在輸入有效時循環。 嘗試輸入失敗時,它將退出循環。

失敗的原因可能有兩個:

  1. 輸入無效
  2. 文件結尾

假設輸入本身是有效的,為了終止循環,輸入流必須到達末尾。

當輸入實際上是文件時,識別結尾很容易:當字符用完時,它位於文件的結尾。 當它是控制台時,並不是那么容易:您必須做些人工操作來指示輸入的結束。

這樣做,您必須告訴終端應用程序(控制控制台)不再有輸入,然后終端應用程序將告訴您的程序它在輸入的末尾。

您的操作方式取決於終端應用程序,該應用程序通常是操作系統的一部分。

  • Windows上ctrl-Z告訴終端應用程序您位於輸入的結尾。
  • Unix系統上 ,它是ctrl-D

您可以通過CTRL-DCTRL-Z發出EOF信號。

或者,您可以檢查特定的字符串來打破循環,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM