Странный вывод в Eclipse CDT counsul
Я получаю следующее на Eclipse CDT при запуске моей программы:
There are 11 sticks left.
3
Enter Move:*stopped,reason="end-stepping-range",frame={addr="0x004015b4",func="_fu4___ZSt3cin",args=[],file="..\src\PlayerUser\PlayerUser.cpp",fullname="C:\Users\...\Desktop\workspace_eclipse\StickGame\src\PlayerUser\PlayerUser.cpp",line="26"},thread-id="1",stopped-threads="all"
Все до "Enter Move" имеет смысл, а остальное - нет. После того, как это происходит, он продолжает позволять мне набирать вещи, но программа, кажется, зависла.
У меня много кода, поэтому вот только соответствующие части:
Основная функция:
int main() {
int sticks = 10;
PlayerUser u(sticks);
PlayerComputer c(sticks);
StickGame game (u, c);
game.startGame(11);
return 0;
}
Функция: PlayerUser::getMove
int PlayerUser::getMove(int n_left){
int on = 0;
while(true){
cout << "There are " << n_left << " sticks left." << endl;
cout << "Enter Move:" << flush; //where error occurs
cin >> on;
if(on <= 3 && on >= 1)
break;
}
setMove(n_left, on);
return on;
}
Из того, что я смог найти, может показаться, что это как-то связано с "подробным режимом консоли", но я не понимаю, что это такое или как это исправить.
1 ответ
У меня возникала одна и та же проблема в отладчике каждый раз, когда я использовал cin сразу после cout, и, наконец, я решил ее, добавив << endl; после кут
bool isDone()
{
char c;
cout << "Enter 'Y' if food is done:";
cin >> c;
return ((c == 'Y') || (c == 'y'));
}
Это генерировало ошибку, такую как:
*stopped,reason="end-stepping-range",frame=...
Но это работает просто отлично:
bool isDone()
{
char c;
cout << "Enter 'Y' if food is done:" << endl;
cin >> c;
return ((c == 'Y') || (c == 'y'));
}