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

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

Войти
Регистрация
Восстановить пароль
 
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
#1

istream состояние bad - C++

31.07.2013, 15:05. Просмотров 520. Ответов 7
Метки нет (Все метки)

Всем привет! Как можно вызвать состояние bad у потока istream? (т.е. не так, что "состояние bad может быть вызвано серьезной ошибкой чтения", а небольшой пример, как просто можно это состояние вызвать (конечно, не используя clear)).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 15:05     istream состояние bad
Посмотрите здесь:

Разница между istream::putback и istream::unget - C++
Можете объяснить, пожалуйста, разницу этих двух функций?

istream - C++
В 12 стоке ошибка no matching function for call to `std::basic_istream<char, std::char_traits<char> >::basic_istream(char*&, size_t)' В...

Почему istream::get() ? - C++
Здравствуйте. Почему перед istream::getline, необходимо делать get(), если перед этим было cin >> char_array (filein >> char_array)? А...

istream, ostream - C++
Есть задача по сохранению в файл и восстановлении из файла объекта. Функции надо сделать такие: void Serialize(std::ostream & stream); //...

Перегрузка ofstream, istream - C++
В общем-то ошибка в описана в самом коде //main.cpp #include "ui.cpp" int main() { ui iu; iu.menu(); iu.casein(); ...

istream и конец строки - C++
Решая задачу, столкнулся с проблемой - не знаю, как записать следующее: "пока не конец строки, читаем слово". То есть: string s; while...

std::istream часть кода - C++
std::istream &read (std::istream &in, Student_Data &S_D) { cout<<"Enter you name: "; in>>S_D.name; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
31.07.2013, 15:11     istream состояние bad #2
Так, например
C++
1
2
3
4
5
6
int main()
{
    cin.putback('l');
    cin.putback('l');
    cout<<cin.eof()<<cin.fail()<<cin.bad()<<cin.good()<<endl;
}
Только не знаю, почему так, хотя по логике уже после первого cin.putback('l'); должно что-то произойти, но там возвращается good
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
31.07.2013, 15:15     istream состояние bad #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Так, например
у меня выводит
Код
0001
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
31.07.2013, 15:18  [ТС]     istream состояние bad #4
У меня выводит тоже, что и у SatanaXIII.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
31.07.2013, 15:19     istream состояние bad #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
у меня выводит
Код
0001
Я на VS2008 и devcpp получил 0110, а на ideone тоже 0001
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
31.07.2013, 15:47     istream состояние bad #6
1)
C++
1
std::cin.setstate(std::ios::badbit);
2)
C++
1
std::cin.rdbuf(0);
3)
C++
1
std::cin.unget();
И так далее.
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
31.07.2013, 16:27  [ТС]     istream состояние bad #7
ForEveR, быть может я неправильно выразился... Постараюсь перефразировать: как получить поток в состоянии bad, не совершая с потоком никаких программных действий (только чтение из потока), а в bad его должно перевести что-то из внешний "раздражителей" (например, неправильный файл). Так как получить этот неправильный файл, или что-то что переведет поток в состояние bad извне?

Добавлено через 2 минуты
Например, что может перевести в состояние bad поток ifs из этого кода?
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#include <iostream>
 
int main()
{
    std::ifstream ifs("data.txt");
    int x;
    while (ifs >> x);
    if (ifs.bad())
        std::cout << "Мы получили что нужно.";
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 16:44     istream состояние bad
Еще ссылки по теме:

Функции istream, требуется объяснение - C++
Здравствуйте! В ходе изучения C++ у меня возникло много вопросов, связанных с функциями istream (возможно я называю неправильно). Узнал о...

Объект cin и класс istream - C++
В учебнике приводиться такое задание: &quot;Напишите функцию, получающую и возвращающую ссылку на объект класса istream. Фукнция должна читать...

В чем причина ошибки istream - C++
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

Использование конструктора с параметром istream - C++
Данное упражнение с книжки Липпмана. Нужно добавить в класс конструктор с параметром istream, а потом в программе конструктор с данным...

istream - считывание определённой строки - C++
Всем привет. Помогите плз. Например у меня есть текстовый файл, в котором написанно: Many Big Pig Best Sick как в string,...


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

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
31.07.2013, 16:44     istream состояние bad #8
Dani, Ничто. Только в failbit.
Чтобы понять что к чему советую почитать раздел 27 стандарта.
Yandex
Объявления
31.07.2013, 16:44     istream состояние bad
Ответ Создать тему
Опции темы

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