[英]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) { ... }
將在輸入有效時循環。 嘗試輸入失敗時,它將退出循環。
失敗的原因可能有兩個:
假設輸入本身是有效的,為了終止循環,輸入流必須到達末尾。
當輸入實際上是文件時,識別結尾很容易:當字符用完時,它位於文件的結尾。 當它是控制台時,並不是那么容易:您必須做些人工操作來指示輸入的結束。
這樣做,您必須告訴終端應用程序(控制控制台)不再有輸入,然后終端應用程序將告訴您的程序它在輸入的末尾。
您的操作方式取決於終端應用程序,該應用程序通常是操作系統的一部分。
您可以通過CTRL-D或CTRL-Z發出EOF信號。
或者,您可以檢查特定的字符串來打破循環,如下所示:
string s;
while (cin >> s)
{
if(s == "end")
break;
cout << s << endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.