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

Флаг failbit для перенаправления строкового потока; почему он всегда у меня поднят? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ BitMap и открытие программы из консоли http://www.cyberforum.ru/cpp-beginners/thread762703.html
#include <stdio.h> #include <stdlib.h> int main(int argc,char *argv) { FILE *strm; int i,j,N; char ch,naglowek; int obraz;
C++ по работе с реестром Приветствую форумчане. Занялся разработкой хоть какой то полезной программки и с разу столкнулся с проблемой, возможно ли методами С/С++ найти значение реестра и изменить его. Если да то просветите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread762681.html
Определить попадание произвольной точки в заштрихованную область C++
Помогите решить такую вот задачку! Нужно определить попадание произвольной точки в заштрихованную область.
C++ Шаблон класса
//файл T_Point_template.h //--------------------------------------------------------------------------- #ifndef T_Point_templateH #define T_Point_templateH #include <vcl.h> #include <math.h> #include <stdio.h> //--------------------------------------------------------------------------- template <class Type> class T_Point
C++ Разработка программы, позволяющей создавать и редактировать электронные таблицы. Должна быть возможность выбора цвета содержимого ячейки и самой ячейк http://www.cyberforum.ru/cpp-beginners/thread762638.html
Разработка программы, позволяющей создавать и редактировать электронные таблицы. Должна быть возможность выбора цвета содержимого ячейки и самой ячейки. Должен быть разработан формат хранения данных таблицы и ее формирования в файле. ОС линукс. Помогите разработать.
C++ Обход в глубину графа Здравствуйте, помогите разобраться в чём ошибка, обход графа к глубину, ошибок не вадаётся но и результат тоже не выводится //ОБХОД ГРАФА В ГЛУБИНУ #include "stdafx.h" #include "iostream" #include "conio.h" #include "fstream" подробнее

Показать сообщение отдельно
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
15.01.2013, 20:40     Флаг failbit для перенаправления строкового потока; почему он всегда у меня поднят?
Цитата Сообщение от kravam Посмотреть сообщение
ios::setstate
Устанавливает флаг, при этом прежние флаги не снимает, например:

C++
1
std::cin.setstate(std::ios::failbit);
или сразу несколько флагов, тут как раз и нужна побитовая дизъюнкция

C++
1
std::cin.setstate(std::ios::eofbit | std::ios::failbit | std::ios::badbit);
А очистить можно std::clear. Например:

C++
1
2
3
std::cin.clear(); // очистит все флаги
std::cin.clear(std::ios::goodbit); // тоже очистит все флаги (потому что goodbit - флаг по умолчанию)
std::cin.clear(std::ios::failbit); // установит fail, а все остальные очистит
Добавлено через 8 минут
Цитата Сообщение от kravam Посмотреть сообщение
ios::rdstate возвращает статус
Можно, кстати, попробовать напечатать возвращаемое значение и увидеть, какие биты устанавливаются. Я не знаю как точно тип iostate реализован, но у меня нормально выводится как десятичное число
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cin.setstate(ios::goodbit);
cout << cin.rdstate() << "\n"; // 0
cin.clear();
 
cin.setstate(ios::badbit);
cout << cin.rdstate() << "\n"; // 1, то есть 00000001
cin.clear();
 
 
cin.setstate(ios::eofbit);
cout << cin.rdstate() << "\n"; // 2, то есть 00000010
cin.clear();    
 
cin.setstate(ios::failbit);
cout << cin.rdstate() << "\n"; // 4, то есть 00000100
cin.clear();
 
Текущее время: 19:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru