1

Пытаюсь написать кроссплатформенную функцию, аналог system("pause");

// Пауза перед закрытием
void PauseOnExit(int lang) {
    PrintVStr(14, lang);
    getchar();
    exit(0);
}

Все хорошо, но, если пользователь до этого что-то ввел - программа сразу закрывается, т.к. могли остаться непроанализированные символы в буфере ввода. И getchar этот прошлый ввод считывает. Вопос: как, собственно, очистить данный буфер? Решение должно быть кроссплатформенным.

  • Посмотрите тут. – Harry May 06 '19 at 08:50
  • @Harry посмотрел. Увы, их код не пройдет. Т.к. в Linux и Windows закончить ввод можно ctr+клавиша – Alrott SlimRG May 06 '19 at 08:53
  • @Harry и никакого \n не будет – Alrott SlimRG May 06 '19 at 08:53
  • Переоткрыть стандартный ввод с опцией не блокировать. Перед getch ar сделать while read. Скушать буфер так сказать. – eri May 06 '19 at 09:10
  • А вот еще стандартная функция есть на cin. https://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer – eri May 06 '19 at 09:11

1 Answers1

2
std::cin.seekg(0, std::ios::end);
std::cin.clear();
AlexGlebe
  • 17,227