Здравствуйте, GiDRAvlic, Вы писали:
GDR>Отрабатывает на ура. За исключением ... когда вводититься вещественное число. GDR>А дальше крах проги. Мысли есть?
А как выглядит этот крах проги? Приведи более подробное описание — что вводится, что выводится и т.д.
Здравствуйте, Михаил Можаев, Вы писали:
ММ>Здравствуйте, GiDRAvlic, Вы писали:
GDR>>Отрабатывает на ура. За исключением ... когда вводититься вещественное число. GDR>>А дальше крах проги. Мысли есть?
ММ>А как выглядит этот крах проги? Приведи более подробное описание — что вводится, что выводится и т.д.
В Debug режиме окно (Abort, Retry, Ignore) в Release режиме в output stream
Содержание:
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Здравствуйте, Михаил Можаев, Вы писали:
ММ>Здравствуйте, GiDRAvlic, Вы писали:
GDR>>Отрабатывает на ура. За исключением ... когда вводититься вещественное число. GDR>>А дальше крах проги. Мысли есть?
ММ>А как выглядит этот крах проги? Приведи более подробное описание — что вводится, что выводится и т.д.
На запрос введите целочисленное число (cin >> MyIntVariable)
вводиться, как я уже писал вещественное число:
допустим 12.12(через точку)
Может существует стандарт ввода веществеттых чисел, так как проходит ввод .010302 и данной проблемы не возникает?
Спасибо.
1. Исключение exception поток не сгенерирует (у меня не получилось)
2. Если требуется контролировать, что ввел пользователь нужно
проверять состояние потока — метод rdstate() или вот пример с
генерацией исключения
int MyVarible;
ios_base::iostate old_state = cin.exceptions(); // какие исключения поток генерил
cin.exceptions(ios_base::failbit); // на что реагировать try{
cin >> MyVarible;
}
catch(ios_base::failure) { // пользователь начудил с вводом
cerr << "Input variable must be integer-based";
cin.clear();
cin.ignore(10000, '\n');
}
cin.exceptions(old_state); // вернем все на место
Здравствуйте, Михаил Можаев, Вы писали:
ММ>Здравствуйте, GiDRAvlic, Вы писали:
ММ>Вот этот пример работает у меня абсолютно нормально:
Нашел ошибку. Я модифифировал немного код по причине использования большого числа empty() и clear().
и на catch(std::exception) делел throw "Какое-то сообщение"
далее