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

Флаг eofbit в потоке и условные операторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Доступ к закрытым членам базового класса http://www.cyberforum.ru/cpp-beginners/thread922408.html
помогите понять что я не так сделал ? #include <iostream> using namespace std; class A { int PrA1; public: int PuA1;
C++ mem_fun и mem_fun_ref Здорова! Есть задачка : "Реализуйте и протестируйте четыре функции mem_fun() и mem_fun_ref() (параграф 18.4.4.2)." Ну там наверно ошиблись не 4 а две функции да пусть две функции будет. Ну и как же... http://www.cyberforum.ru/cpp-beginners/thread922401.html
C++ С чего начать?
Я уже давно заинтересован в программировании и хочу заняться самообучением. Но не знаю с чего начать, какой язык программирования стоит выбрать для начала? Какие книги стоит приобрести?
Чтение из двух файлов и запись в один C++
Помогите с одной задачей. У меня есть два файла: 1. "oldmast.dat" в котором 4 поля: номер счета клиента, фимилия, имя и баланс; 2. "trans.dat" где 2 поля: номер счета клиента и вносимая сумма; И...
C++ Расставить на доске N ферзей так, чтобы они не били друг друга http://www.cyberforum.ru/cpp-beginners/thread922352.html
смысл в том чтобы расставить на шахматной доске размером N*N, N ферзей так, чтобы они не били друг друна. пыиался сделать что то методом перебора, но программа зависает. где здесь может быть ошибка?...
C++ Прочитать все записи, номер которых кратен 5 и вывести их не экран. задан файл неопределённой длины, прочитать все записи, номер которых кратен 5 и вывести их не экран. подробнее

Показать сообщение отдельно
lss
921 / 850 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
13.07.2013, 07:35  [ТС]
Цитата Сообщение от Olivеr Посмотреть сообщение
Попробуйте запустить такой код. Введите, например, 1234 5325 Ctrl + Z.
Из работы этого кода следует (eofbit false), что это неверно:
Цитата Сообщение от Olivеr Посмотреть сообщение
ообщение от lss
Где-то попадалось, что Ctrl + Z генерируеи именно EOF. Если по названию судить, то можно предположить, что устанавливает в потоке флаг eofbit.
Он устанавливает eofbit, а еще и failbit
Получается, что только failbit. Но опять непонятное. Если просто ввести Ctrl + Z, то выдаст: eofbit true. В этом случае устанавливает. Вообщем, как хочешь, так и понимай...

Добавлено через 17 минут
Уж если трактовать утановленный eofbit как ошибку (чтение же невозможно), то везде. А то чтение невозможно, good() покажет, что поток не рабочий, но условные операторы покажут, что всё в порядке, поток рабочий.

Добавлено через 24 минуты
Цитата Сообщение от Olivеr Посмотреть сообщение
Попробуйте запустить такой код. Введите, например, 1234 5325 Ctrl + Z.
Такой код не очень подходит для разбирательства. Скорее всего, там failbit устанавливается не потому, что Ctrl + Z попался, а потому, что не цифра попалась (поэтому и eofbit не устанавливается). Если взять такой код:
C++
1
2
3
4
5
6
char x[20];
    while (std::cin >> x);
    std::boolalpha(std::cout);
    std::cout << "badbit " << std::cin.bad() << std::endl
         << "failbit or badbit " << std::cin.fail() << std::endl
         << "eofbit " << std::cin.eof() << std::endl;
то присутствие в строке Ctrl + Z (1234 5325 Ctrl + Z или 12345Ctrl + Z) никак не поможет выйти из цикла. Только если отдельно в строке ввести Ctrl + Z.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru