1
我這段代碼的意圖是使用switch語句作爲一個項目我工作的一個簡單的控制菜單。這段代碼的問題是,第一個「COUT」語句打印出這樣兩次:創建一個簡單的控制菜單項目和循環輸出一個提示,更多的時間比預期的
你想怎麼辦? (按下一個字母):
你想怎麼辦? (按下一個字母):
而不是我的預期:
你想怎麼辦? (按下一個字母):
這裏是我的代碼(我刪除的情況下報表的可讀性內的一切):提醒我說,「CIN
char cMenu;
while (true) {
cout << endl << "What would you like to do?" << endl <<"(Press a letter): " << endl;
cin >> cMenu;
switch (cMenu)
{
case 'C':
case 'c':
{
cout << "*";
break;
}
case 'J':
case 'j':
{
cout << "*";
break;
}
case 'S':
case 's':
{
cout << "*";
break;
}
case 'X':
case 'x':
cout << "*";
break;
}
}
您可能在流中正在通過'cin >> cMenu'(新行可能?)讀入流中的字符,但未由相應的switch語句處理,因此該循環實際上運行了兩次。嘗試在執行循環之前忽略'cin'流中的所有內容('cin.ignore(std :: numeric_limits :: max()); cin.clear();')。 –
lcs
哪個編譯器和操作系統您使用的?你確定你沒有其他'cout'某處'之開關語句中?原來,我無法在Windows上使用VS2013進行復制,也無法在Linux上使用g ++進行復制。 – Ron