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

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

Войти
Регистрация
Восстановить пароль
 
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 855
Завершенные тесты: 1
#1

Обработка ошибок ввода из потока cin - C++

02.07.2016, 14:29. Просмотров 342. Ответов 2
Метки нет (Все метки)

Доброго времени суток всем!
Помогите пожалуйста разобраться.
После ввода буквы например, то есть когда поток ломается, пытаюсь его починить, но программа зацикливается и бесконечно пишет "Повторите ввод, что-то пошло не так!". Как починить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Point {
        int x, y;
    };
vector<Point> v(7);
for (int i = 0; i < 7; i++) {
        cout << i + 1 << "ая пара: ";
        cin >> v[i].x >> v[i].y;
        if (!cin) {
            cout << "Повторите ввод, что-то пошло не так!" << endl;
            cin.clear();
            cin.sync();
            i--;
        }
    }
Добавлено через 2 минуты
Спасибо всем разобрался.
Надо было буфер почистить.
C++
1
while (cin.get() != '\n');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2016, 14:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработка ошибок ввода из потока cin (C++):

Обработка ошибок cin (тип bool) - C++
Доброго времени суток. Собственно, проблема. Надо поймать все ошибки при вводе в тип bool: буквы, ентеры, пробелы, цифры, отличные от 0 и...

Работа с cin при считывании с потока ввода - C++
есть кусочек кода while (1) { string buf = name; cout &lt;&lt; &quot;Message : &quot;; string symbolBuf = &quot;&quot;; while (cin &gt;&gt;...

Использование потока cin для ввода символов - C++
Вот первая функция, cin.get(ch) которую я не понимаю int main() { char ch; cin.get(ch); while (ch != '\n') { cout &lt;&lt;...

Чтение числа из потока и обработка ошибок - C++
Есть поток. Из потока читается число. При чтении происходит сбой. Как узнать что конкретно сбойнуло (число слишком большое/это не число/в...

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

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

2
Croessmah
Ушел
Эксперт CЭксперт С++
13563 / 7714 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
02.07.2016, 16:08 #2
Цитата Сообщение от shilko2013 Посмотреть сообщение
C++
1
2
cin.clear();
cin.sync();
кто научил так делать?
Поведение sync зависит от реализации.
Накропал по-быстрому, не знаю,
будет ли работать так, как ожидается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
if(cin.eof()){
   clear();
}else{
   if(cin.bad()){
      std::cerr << "Усё, доигрались\n";
   }else{
      if(cin.fail()){
          cin.clear();
          std::getline(cin, str);//что-то подобное
      }
   }
}
1
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 855
Завершенные тесты: 1
04.07.2016, 16:15  [ТС] #3
Croessmah, Я разобрался, до пробела надо было читать так
C++
1
2
3
char a;
while (a != ' ')
a = cin.get();
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2016, 16:15
Привет! Вот еще темы с ответами:

Обработка потока ввода - C++
Подскажите, как сделать так, чтобы поток обрезал данные, которые находятся после нужного мне значения, например ввожу два числа: 1 5 -...

Обработка данных из потока ввода - C++
Программа в консоли. На экране консоли происходят некоторые действия, в которые пользователь может вмешаться нажатием клавиш, или не...

Visual C++ 2012. Консоль. scanf(). Обработка ошибок ввода - C++
Я использую процедуру scanf() для ввода даты через точку (типа 01.01.2000). Мне надо сделать так, чтобы обрабатывались ошибки при вводе...

Задача преобразования числа в предложение | обработка потока ввода - C++
Здравствуйте. Я нашел варианты решения в прикрепленной теме, но интересует вопрос следующего содержания: существуют ли метод...


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

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

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