Пользовательский ввод Как проверить клавишу ENTER

У меня есть раздел кода, где пользователь вводит данные с клавиатуры. Я хочу что-то сделать при нажатии ENTER. Я проверяю '\n', но это не работает. Как проверить, нажал ли пользователь клавишу ENTER?

if( shuffle == false ){
    int i=0;
    string line;
    while( i<20){
        cout << "Playing: ";
        songs[i]->printSong();
        cout << "Press ENTER to stop or play next song: ";
        getline(cin, line);            
        if( line.compare("\n") == 0 ){
            i++;
        }
    }
}

person user69514    schedule 22.04.2010    source источник


Ответы (3)


getline возвращает результат только при нажатии Enter (или Return, он может быть помечен в любом случае, в зависимости от вашей клавиатуры), поэтому нет необходимости дополнительно проверять это — вы хотите проверить что-то еще, может быть, например, ввел ли пользователь что-то еще перед Enter?

person Alex Martelli    schedule 22.04.2010

getline не вернется, пока не будет нажата клавиша ввода. Если вы хотите проверить, было ли нажато только введенное, проверьте, не пусто ли line: if (line.empty())

person GManNickG    schedule 22.04.2010

person    schedule
comment
Насколько я понимаю, он проверяет только символ новой строки. И это лучший способ сделать именно это. - person kurige; 22.04.2010