Программист
|
||||||
1 | ||||||
Универсальная функция получения числа через cin30.10.2013, 00:51. Показов 2462. Ответов 31
Метки нет (Все метки)
Пытался написать универсальную функцию для гарантированного получения числа нужного типа, примерно так:
В частности при вызове с аргументом шаблона T = long double и рандовном набивание символов num присваивается 0, а clear то ли не отрабатывает как надо, то ли еще что... в общем все работает не так. Светлые умы, помогите довести до ума кто знает как Добавлено через 18 минут Кстати также некорректно обрабатывает ввод типа 2,,3, при нем двойка считывается как корректное значение, но поток не очищается от мусора, как я понимаю(а было бы не плохо все это непотребство отбраковывать и требовать повторный ввод).
0
|
30.10.2013, 00:51 | |
Ответы с готовыми решениями:
31
Заполнить массив цифрами числа, считанного через cin Как работает cin.peek, cin,get, cin.ignore, cin.clear? Универсальная функция Универсальная функция |
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
30.10.2013, 03:13 | 21 | |||||
Вот этот будет работать, mingw почему-то не нравится cin.ignore(cin.rdbuf()->in_avail()) :
Потом нужно будет разобраться, что ему не нравится. Добавлено через 1 минуту MrGluck, в Linux, кстати, sync() не работает. По-моему, у вас, один из вариантов, использует.
1
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
30.10.2013, 03:18 | 22 | |||||
Добавлено через 3 минуты
1
|
Программист
|
|
30.10.2013, 03:22 [ТС] | 23 |
Так, подтверждаю работоспособность последнего выложенного кода на своей машине, большое спасибо.
Никогда не дружил с "заскоками" iostream'ов, завтра на свежую голову поизучаю повнимательнее, что где было не так.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
30.10.2013, 03:29 | 24 | |||||
Вот ещё, добавил предварительнное восстановление потока, если ломается до вызова функции:
MrGluck, если по-русски, почему?
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
30.10.2013, 03:59 | 28 |
Оно кидает исключение
В описании http://www.cplusplus.com/refer... /in_avail/ Исключение выдает basic_ios::clear.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||||||
30.10.2013, 04:28 | 32 | ||||||||||
Исключение при перехвате выдает basic_ios::clear.
Нашел решение: нужно добавить строку
А MS судя по всему с борландом синхронизируют любой поток и функция ios_base::sync_with_stdio() у них вообще не реализована толком. Добавлено через 1 минуту у меня именно этот мингв исключение кидал.
0
|
30.10.2013, 04:28 | |
30.10.2013, 04:28 | |
Помогаю со студенческими работами здесь
32
Универсальная функция Универсальная функция Ajax Универсальная функция вывода Универсальная функция запросов в базу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |