Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
#1

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

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

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

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

Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &)
Добрый день. Как осуществляется выделения памяти под перегруженный оператор...

Parse_matrix(std::istream& in); std::istream& in что это значит?
Есть функция которую необходимо описать: std::pair<int, int>...

istream
В 12 стоке ошибка no matching function for call to `std::basic_istream<char,...

istream, ostream
Есть задача по сохранению в файл и восстановлении из файла объекта. Функции...

Почему istream::get() ?
Здравствуйте. Почему перед istream::getline, необходимо делать get(), если...

7
ViktorKozlov
134 / 126 / 59
Регистрация: 13.12.2012
Сообщений: 293
31.07.2013, 15:11 #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
0
SatanaXIII
Супер-модератор
Эксперт С++
5765 / 2763 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
31.07.2013, 15:15 #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Так, например
у меня выводит
Код
0001
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
31.07.2013, 15:18  [ТС] #4
У меня выводит тоже, что и у SatanaXIII.
0
ViktorKozlov
134 / 126 / 59
Регистрация: 13.12.2012
Сообщений: 293
31.07.2013, 15:19 #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
у меня выводит
Код
0001
Я на VS2008 и devcpp получил 0110, а на ideone тоже 0001
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
31.07.2013, 15:47 #6
1)
C++
1
std::cin.setstate(std::ios::badbit);
2)
C++
1
std::cin.rdbuf(0);
3)
C++
1
std::cin.unget();
И так далее.
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
31.07.2013, 16:27  [ТС] #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 << "Мы получили что нужно.";
}
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
31.07.2013, 16:44 #8
Dani, Ничто. Только в failbit.
Чтобы понять что к чему советую почитать раздел 27 стандарта.
1
31.07.2013, 16:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 16:44
Привет! Вот еще темы с решениями:

Перегрузка ofstream, istream
В общем-то ошибка в описана в самом коде //main.cpp #include &quot;ui.cpp&quot; int...

istream и конец строки
Решая задачу, столкнулся с проблемой - не знаю, как записать следующее: &quot;пока...

std::istream часть кода
std::istream &amp;read (std::istream &amp;in, Student_Data &amp;S_D) {...

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


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

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

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