string a, b;
cin >> a >> b;
if (a == "yes") break;
...
爲什麼這不起作用?如果用戶輸入「yes please」或「yes」,程序應該跳出它所在的任何循環,但這不會發生。控制檯只打印換行並等待。我在這裏做錯了什麼?C++驗證同一行上的兩個第一個輸入
string a, b;
cin >> a >> b;
if (a == "yes") break;
...
爲什麼這不起作用?如果用戶輸入「yes please」或「yes」,程序應該跳出它所在的任何循環,但這不會發生。控制檯只打印換行並等待。我在這裏做錯了什麼?C++驗證同一行上的兩個第一個輸入
第二串b
的讀取是不可選的,所以如果你輸入"yes"
或其他任何一個字,程序塊,讓你進入第二個。
操作的流程進行如下:
a
b
"yes"
請注意,比較不會在b
的讀數結束之前開始。
如果你想退出就簡單"yes"
循環,讀a
,把它比作"yes"
,在必要時打破,然後纔讀b
:
cin >> a;
if (a == "yes") break;
cin >> b;
現在,如果循環沒有退出,你有兩個a
和b
,你知道a
不等於"yes"
。
感謝您的好解釋 – Norse
目前:
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仍然會「是在同一行」
提示:你可以打開一罐蠕蟲,並使用[正則表達式(http://en.cppreference.com/w/ cpp/regex)在這裏。你永遠不知道,它可能只是工作。 – tadman
如果您輸入「是」,程序將等待。如果你輸入「是的,請不要等待」。 –
尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –