438 / 96 / 41
Регистрация: 04.10.2011
Сообщений: 343
1

Зацикливание ввода

04.06.2018, 17:53. Показов 1093. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ подскажите в чем может быть дело, если ввести не корректные данные в представленный код, например два слова через пробел, то
ввод зацикливается, я вроде и фейл-биты сбрасываю и буфер чищу, а все-равно зацикливает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
 
using namespace std;
 
int main()
{
    int id;
    string name;
 
    cout << "Please fill data: (int)id (string)name \n"
            "(press Ctrl+D to complete):";
 
    while(true) {
        if (cin >> id >> name) {
            cout << "Entered: "<< id << ":" <<name << "\n";
            continue;
        }
 
        if (cin.eof()) { break; }
        if (cin.fail()) {
            cerr << "Wrong data try again.\n";
            cin.clear();
            cin.ignore(cin.rdbuf()->in_avail());
        }
 
        cerr << "in_avail" << cin.rdbuf()->in_avail() << "\n"; // 0
        cerr << "eof" << bool(cin.eof()) << "\n";   // 0
        cerr << "fail" << bool(cin.fail()) << "\n"; // 0
        cerr << "bad" << bool(cin.bad()) << "\n";   // 0
        cerr << "good" << bool(cin.good()) << "\n";   // 1
    }
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2018, 17:53
Ответы с готовыми решениями:

Как избежать зацикливание ввода не числа?
Как избежать зацикливание ввода не числа? чтобы при вводе символа не уходил в бесконечный цикл....

Зацикливание
При выводе стека бесконечный вывод последнего элемента Stack&lt;Command&gt; cmds;...

Зацикливание
Вообще не понимаю тему, но надо срочно сдать задачу. Вводится целое число Х (1 &lt;= X &lt;= 1000) ...

зацикливание в C++
Подскажите, пожалуйста, как зациклить программу, чтобы при попытке набрать другой символ выдавалось...

4
Заблокирован
04.06.2018, 17:57 2
А мож выкинуть все эти cin, cout, cerr к ядрене фене и заюзать какойнить scanf()?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.06.2018, 18:09 3
Цитата Сообщение от moskitos80 Посмотреть сообщение
я вроде и фейл-биты сбрасываю и буфер чищу, а все-равно зацикливает:

дык, что бы ему не зацилиться,
если условие выхода из цикла:
C++
1
2
if (cin.eof()) 
    break;
когда по вашему стандартный поток cin достигнет конца файла?
0
438 / 96 / 41
Регистрация: 04.10.2011
Сообщений: 343
04.06.2018, 19:24  [ТС] 4
Цитата Сообщение от Verevkin Посмотреть сообщение
А мож выкинуть все эти cin, cout, cerr к ядрене фене и заюзать какойнить scanf()?
Супер! Но я все же поюзаю iostream
Цитата Сообщение от hoggy Посмотреть сообщение
дык, что бы ему не зацилиться,
если условие выхода из цикла:
Дело не в этом, а в том что при условии что:

in_avail = 0
eof = 0
fail = 0
bad = 0
good = 1

поток не блокируется на следующей итерации цикла для ожидания ввода пользователя, а зацикливается. И кстати это было под GCC пришел домой запустил в VS все работает как надо не пойму в чем дело?
0
Заблокирован
04.06.2018, 20:43 5
Цитата Сообщение от moskitos80 Посмотреть сообщение
Супер! Но я все же поюзаю iostream
Удачи тебе. И терпения.

Зацикливание ввода
0
04.06.2018, 20:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2018, 20:43
Помогаю со студенческими работами здесь

Зацикливание
Помогите разобраться while (point &gt;= min &amp;&amp; point &lt;= max || prodal &gt;= min &amp;&amp; prodal &lt;= max) {...

Зацикливание
Всем доброго времени суток. Написал прогу по определению кратности второго числа относительно...

Зацикливание
Вобщем, проверял уже 100 раз. Думаю причина в моем неумении работать с файлами. Почти все...

зацикливание
Не выдает нужного результата происходит зацыкливание // wer.cpp : Defines the entry point for the...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru