2014-11-25 11 views
0

Так я использовал библиотеку termios поставить терминал в нестандартном режиме, что позволяет мне сделать это:Как очистить входной буфер с TTY, установленным в режим raw, используя std :: cin?

int getch() { 
    int ch; 
    do { 
    ch = cin.get(); 
    } while(cin.eof()); 
    return ch; 
} 

Это ждет одного символа, чтобы быть готовым в буфер ввода и возвращает его.

Но если я пытаюсь сделать это:

void clear_input_buffer() { 
    char ch; 
    while(!cin.fail()) { 
    cin.get(ch); 
    } 
} 

Он переходит в бесконечный цикл.

Каким будет способ очистки входного буфера? Я пробовал:

cin.clear(); 
cin.ignore(INT_MAX); 

Но он также висит. Я также хотел бы сделать это, используя только iostreams или стандартные функции posix.

ответ

1

Просто сделай обычный:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

 Смежные вопросы

  • Нет связанных вопросов^_^