Странный вывод в 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'));
    }
Другие вопросы по тегам