2017-02-09 52 views
-5
string a, b; 
cin >> a >> b; 
if (a == "yes") break; 
... 

爲什麼這不起作用?如果用戶輸入「yes please」或「yes」,程序應該跳出它所在的任何循環,但這不會發生。控制檯只打印換行並等待。我在這裏做錯了什麼?C++驗證同一行上的兩個第一個輸入

+0

提示:你可以打開一罐蠕蟲,並使用[正則表達式(http://en.cppreference.com/w/ cpp/regex)在這裏。你永遠不知道,它可能只是工作。 – tadman

+2

如果您輸入「是」,程序將等待。如果你輸入「是的,請不要等待」。 –

+0

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

回答

2

第二串b的讀取是可選的,所以如果你輸入"yes"或其他任何一個字,程序塊,讓你進入第二個。

操作的流程進行如下:

  • 等待的第一個字到a
  • 等待第二個字爲b
  • 的第一個字進行比較,以"yes"

請注意,比較不會在b的讀數結束之前開始。

如果你想退出就簡單"yes"循環,讀a,把它比作"yes",在必要時打破,然後纔讀b

cin >> a; 
if (a == "yes") break; 
cin >> b; 

現在,如果循環沒有退出,你有兩個ab,你知道a不等於"yes"

+0

感謝您的好解釋 – Norse

0

目前:

string a, b; 
cin >> a >> b; 
if (a == "yes") break; 
... 

做的,隨後這將是正確的方法。當你同時選擇a和b時,b沒有價值。

string a, b; 
cin >> a; 
if (a == "yes") 
{ 
break; 
} 
cin >> b; 

b仍然會「是在同一行」

相關問題