Ввод с проверкой корректности
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Здравствуйте.
Пытаюсь реализовать ввод числа, но не просто ввод, а ввод с проверкой корректности.
Пишу так:
Но у этого кода есть проблемы:
12345asd
), сообщение об ошибке не выведется, а вi
будет записано12345
( для примера выше ).Под конец стандартный вопрос:
В чём дело?
UPD
Если пользоваться кодом из вот этой статьи, то по второму пункту будет всё чуть лучше. Сообщение об ошибке не будет выводиться вечно, а выведется
n
раз.А такое?
in_avail скорее всего возвращает 0 для синхронизированных потоков. Можно попробовать отрубить синхронизацию:
ну так считал же число, а дальше уже идут не числовые данные
Да, этот код работает. Но я не пойму, в чём его секрет?
UPD
Это же вроде тоже очистка потока или нет?
А секрет в том, что, в отличии от in_avail, который может запросто вернуть 0, здесь игнорирование максимального кол-ва символов и вторым параметром еще разделитель.
Всё понял. Большое спасибо :)