735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
||||||
1 | ||||||
Ошибка при повторном получении данных из потока cin27.08.2012, 12:03. Показов 2735. Ответов 15
Метки нет (Все метки)
Добрый день, уважаемые форумчане.
Делал учебную задачу и столкнулся с проблемой, которую затрудняюсь сам решить. Задача формулируется следующим образом: Решение
Но строчка функции main() "cin>>num_sum;" отрабатывает не так, как мне бы хотелось - судя по всему , в потоке cin остаются необработанные символы, так что у пользователя не запрашивается новый ввод и в переменную num_sum передается ерунда. Подскажите, пожалуйста, как можно от этого избавиться? P.S. Если необходимо содержимое "Lib.h", могу его скинуть.
0
|
27.08.2012, 12:03 | |
Ответы с готовыми решениями:
15
Ошибка при повторном запуске потока TidHTTP ошибка при получении данных Ошибка при получении данных из $_POST Ошибка при получении данных из БД при использовании MVC framework 4.0 |
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
27.08.2012, 12:16 | 2 |
При вводе 'Y' Вы нажимаете Enter?
0
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
27.08.2012, 12:22 [ТС] | 3 |
Нет. Но проблема не в этом - ошибка возникает раньше предложения ввести "Y".
Собственно, программа отрабатывает следующим образом: Код
Please, enter row of integers, separated with space. To exit press <|> 1 2 3| Please, enter number of values to sum (from the first): error: Wrong number of elements! Press Y - for new input
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
27.08.2012, 12:50 | 4 | |||||
Устанавливается флаг конца файла. Нужно сбрасывать флаг или сделать просто контрольное значение.
Добавлено через 10 минут
1
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
||||||
27.08.2012, 13:37 [ТС] | 5 | |||||
Переписал функцию input:
Спасибо за помощь. cin.clear(); кстати говоря, не помогал. Не знаю почему. Добавлено через 37 минут P.S. Работает, но неправильно. Я, видимо, не вполне понимаю, как работает cin. На строку "1а2 3" он не становится cin.eof. Зато проверка if (c!='|') работает нормально.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
27.08.2012, 13:43 | 6 |
Правильно, потому что в данном случае устанавливается флаг badbit или failbit.
1
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
27.08.2012, 13:52 [ТС] | 7 |
If (cin.fail()) {}
работает нормально. Но я не понимаю, как его потом "оживить", чтобы он дальше принимал значения. cin.clear(); не работает
0
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
27.08.2012, 14:23 | 8 |
cin.sync() ?
0
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
27.08.2012, 14:56 [ТС] | 9 |
А, все. cin.clear() работает. Я тупой просто.
Всем спасибо за помощь.
0
|
Заблокирован
|
||||||
27.08.2012, 16:54 | 10 | |||||
Gibboustooth, вот и всё решение
1
|
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
|
|
27.08.2012, 17:40 [ТС] | 11 |
Спасибо. Я просто изучаю вызовы функций и обработку ошибок (Try {}, Throw(), Catch () {} и т.д.) вот и пихаю их куда не попадя
А зачем функция num()? Можно же использовать vec.size() прямо в main()?
0
|
|
27.08.2012, 17:45
#12
|
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
27.08.2012, 17:46 | 13 |
size и есть метод.
0
|
Заблокирован
|
||||||
27.08.2012, 17:49 | 14 | |||||
Не по теме: - не надо перенасыщать код этим всем, оно путает читающего листинг. Надо вставлять там где это необходимо, ИМХО лучше баги не фиксить в готовом коде а устранять на этапе разработки. Добавлено через 2 минуты Toshkarik, я порой поражаюсь твоей прямолинейности
0
|
Toshkarik
|
27.08.2012, 17:59
#15
|
Не по теме: И я про то же. Нет в этом смысла никакого.
0
|
|
27.08.2012, 20:10
Ошибка при повторном получении данных из потока cin
#16
|
Не по теме: Toshkarik, ну не видишь не видь,дело твое личное...
0
|
27.08.2012, 20:10 | |
Перезапуск таймера при повторном запуске потока При повторном открытии потока ofstream выводятся иероглифы Работа с cin при считывании с потока ввода Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |