我正在嘗試使用C++製作一個基本遊戲,以擴展我對該語言的理解。我有以下代碼,當用戶輸入無效答案時,他們會被要求再次嘗試。Cout函數在C++中打印太多次
void turn_update()
{
player = (player % 2 == 0)? 1 : 2;
mark = (player == 1)? 'X' : 'O';
cout << " Please make your move, " << mark << ":" << endl;
int x = 0;
while(!(cin >> x) || x > 9 || x < 1 || board[x] == 'X' || board[x] == 'O')
{
cin.clear();
cin.ignore();
cout << " Invalid input. Try again: ";
}
cout << "\n" << endl;
board[x] = mark;
draw_board(board);
}
當用戶輸入說「123456」他們的迴應是:
Please make your move, X:
123456
Invalid input. Try again:
現在,這就是我想和同樣適用於一個字母。 E.g:
Please make your move, X:
a
Invalid input. Try again:
但是,當用戶輸入兩個或多個字母Invalid input: Try again:
會打印出相同的次數作爲輸入的字母數...
Please make your move, X:
aa
Invalid input. Try again: Invalid input. Try again:
Please make your move, X:
aaa
Invalid input. Try again: Invalid input. Try again: Invalid input. Try again:
可有人請解釋一下爲什麼?我對C++沒有太多的經驗,如果您對常規代碼有任何提示,我將非常感謝您的建議。
'的std :: getline'可能是有用的。根據[cplusplus](http://www.cplusplus.com/reference/istream/istream/ignore/)和[cppreference](http:// en),'std :: cin.ignore()'只會忽略1個字符.cppreference.com /瓦特/ CPP/IO/basic_istream /忽略)。 – user202729
cout <<「\ n」<< endl;爲什麼兩個版本 –
@ user202729謝謝! –