Цикл и функция cin.get()

113
14 ноября 2019, 17:00

Пишу программу,где каждую секунду пользователь должен вводить определенный символ в консоль.Пользуюсь для этого функцией cin.get(ch).Проблема в том,что она принимает и Enter за символ тоже и кладет его в буфер входного потока,поэтому когда через секунду снова вызывается cin.get(ch) программа сама туда вводит символ '\n',не дожидаясь пользователя.Как с этим бороться?Конечно,можно перед следующим вызовом cin.get(ch) сначала вызвать "холостую" cin.get(),которая не записывает никакого значения в переменную,дабы очистить буфер потока,но это больше похоже на какой-то костыль...Да и этот трюк уже не сработает,если в буфере окажется вдруг больше одного символа. И еще,есть какие нибудь функции,которые считывают по одному символу,не дожидаясь,пока пользователь нажмет Enter?Желательно из стандартных библиотек С++.

Answer 1

Как вариант if (ch == '\r') сh = getch(); или использовать cin.ignore();

READ ALSO
Конструкторы и ключевое слово this (пример)

Конструкторы и ключевое слово this (пример)

Не понимаю почему так странно выводится информация в консоль:

153
Есть ли способ отображать юникод как симоволы кириллицы в редакторе Intellij Idea?

Есть ли способ отображать юникод как симоволы кириллицы в редакторе Intellij Idea?

У меня есть файлы properties, в которых юникодом закодированы сообщения, использующие кириллицуПримерно так:

147
Ошибка при добавлении записи в БД через Hibernate

Ошибка при добавлении записи в БД через Hibernate

Имеется БД со схемой и таблицей внутри с полями id и url, пытаюсь добавить информацию (id и url) в БД PostgreSQL через Hibernate, вываливается ошибка:

123
Логирование подготовленного запроса в groovy

Логирование подготовленного запроса в groovy

Мне требуется логировать подготовленные запросы в groovy

116