Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
#1

Поток ввода без ошибок - C++

04.09.2011, 15:29. Просмотров 745. Ответов 2
Метки нет (Все метки)

В чем состоит задача: нужно организовать ввод вещественных чисел в массив с помощью cin. И нужно, чтобы при вводе символа не подходящего под double он выбивал ошибку и просил ввести снова. С помощью scanf я раньше делал такой макрос:
Код
#define scan( TEXT , FORMAT , ADRES) printf (TEXT); fflush(stdin); while(scanf(FORMAT,ADRES)!=1){ printf("\nОшибка ввода! "TEXT);fflush(stdin); }
Зачем он нужен: сначала выведется текст на экран (первый параметр), затем очистится буфер ввода (если там вдруг что-то завалялось), потом начнется цикл ввода значения пока scanf не вернет true (если ввод успешно завершен).
Можно ли что-то подобное реализовать с помощью cin?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2011, 15:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поток ввода без ошибок (C++):

Обработка ошибок ввода - C++
Доброго времени суток. Имеется код который я написал для обработки ошибок ввода: #include <iostream> #include <cctype> #include...

Обработка ошибок ввода - C++
Как решить? Можете помочь 9 вариант Прочитайте правила: Правила форума Пункт 5.18: Запрещено размещать задания и решения в виде...

Стандартный поток ввода - C++
Доброго времени суток. Допустим есть код: double d; cin >> d; Допустим, в потоке ввода символы "12.e", поток...

Стандартный поток ввода - C++
В условии задачи написано: на стандартном потоке ввода задаётся последовательность целых чисел. Вся эта последовательность завершается...

Поток файлового ввода - C++
Что означает функция fin? #include <iostream> //cin и сout (потоковый ввод вывод) #include <fstream> //библиотека для работы...

Поток ввода-вывода - C++
#include <iostream> using namespace std; int main() { int i; while(true) { if(cin>>i)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
04.09.2011, 18:01 #2
Ну в цикле считываете данные через cin. Если попалась ошибка (if cin.fail()) - выдаёте уведомление, чистите поток (cin.clear()) , отбрасываете что в потоке (cin.sync()) и снова считываете в переменную данные.
1
Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
04.09.2011, 21:44  [ТС] #3
Цитата Сообщение от Gepar Посмотреть сообщение
Ну в цикле считываете данные через cin. Если попалась ошибка (if cin.fail()) - выдаёте уведомление, чистите поток (cin.clear()) , отбрасываете что в потоке (cin.sync()) и снова считываете в переменную данные.
Спасибо, заработало.
Код
#define Cin(TEXT,VAR)\
	do {\
	cout<<TEXT;\
	cin.clear();\
	cin.sync();\
	cin>>VAR;\
	if(cin.fail()) cout<<"Ошибка! ";\
	}while(cin.fail());
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2011, 21:44
Привет! Вот еще темы с ответами:

Не очищается поток ввода - C++
Ребят,у меня не очищается поток ввода,и не вводится фамилия студента(сразу перескакивает на группу студента),помогите пожалуйста ,спасибо...

Поток ввода cin - C++
Привет. Я только начинаю учить C++, так что не смейтесь если проблема примитивная, но всё равно прошу помочь :) Учусь по книге...

Перегрузка ввода/ввывода в/из поток(а) - C++
Помогите, пожалуйста, произвести перегрузку операторов: &gt;&gt; и &lt;&lt; Работаю с матрицами. Код такой: #include &lt;conio.h&gt; ...

Как очистить поток ввода? - C++
std::istringstream iss(s1); idd&gt;&gt;a; iss.clear();; s1=s3; iss&gt;&gt;b надо чтоб s3 в b записалось, громадное число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru