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

Не удаётся сбросить ios::failbit - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите, как исправить 1 ошибку в программе? http://www.cyberforum.ru/cpp-beginners/thread1105788.html
#include "stdafx.h" #include <stdio.h> #include <conio.h> double min = 0; /* зовнiшня змiнна */ int main() { FILE * file; char namef; /*...
C++ Найти и вывести на экран последние три числа, которые кратны четырем (4) и не кратны трем (3) Помогите пожалуйста!!:)Нужно доработать программу, чтобы она выводила 3 слагаемые суммы,т.е эти последние 3 числа:) условие ниже. Найти и вывести на экран последние три числа, которые кратны... http://www.cyberforum.ru/cpp-beginners/thread1105786.html
Использование массивов в качестве аргумента функции C++
Расстояние l от начала координата до точки n-мерного пространства с координатами(x1,x2....xn)...
Добрый день. Подскажите, возможно ли в system задать условие? C++
Добрый день. Подскажите, возможно ли в system задать условие? Например чтобы если a=1 записывал одно, а если a=2 записывал другое. Заранее благодарю. #include <ios> int main(){ system("for...
C++ Вычесть из элементов первого столбца матрицы значение максимального элемента матрицы http://www.cyberforum.ru/cpp-beginners/thread1105716.html
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычесть из элементов первого столбца матрицы значение максимального элемента матрицы; 3) переставить...
C++ Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. подробнее

Показать сообщение отдельно
Joe Rixans
0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 5
26.02.2014, 23:23  [ТС]
Цитата Сообщение от retmas Посмотреть сообщение
C++
1
2
3
4
5
cin.clear(ios::badbit);
...
cin.clear(ios::eofbit);
...
cin.clear(ios::failbit);
мне интересно, вы правда понимаете что делают тут ваши clear?
я вполне, а вы? clear без аргументов выставляет все флаги в допустимое состояние, кроме _Hardfail. в качестве аргументов принимает флаги состояние потока, которые выставляет в допустимое состояние. если хотите можно реализовать через setstate, которая является аналогом.
зачем я тут сделал 3 проверки спросите вы, если можно обойтись проверкой значения метода good() потока? чтобы наглядно показать, что не реагируют на ^Z операторы потока, а реагируют в первую очередь на разность типов. напомню, что failbit выставляется и тогда, когда поток достиг конца.

Добавлено через 11 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Это если он без аргументов. Если с аргументом, то этот флаг как раз установится, а другие будут сброшены.
Вы не путаете с методом setstate? Специально залез в Страуструпа
void clear [iostate f= goodbit) ; //установить флаги состояния i/o , где goodbit==0

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Если в этой строке: 98 98 484 6 ^Z 5 1265 64 652, то:
C++
1
2
3
cin.clear();
cin.get();
cin.get();
Я понял вашу идею, но мне всё равно не понятно, почему не удаётся сбросить флаги в ручную? Флаги устанавливаются при чтении из потока, Но, когда я уже прочитал конец файл, почему флаги не сбрасываются? Да, я понимаю, что поток по сути "остановился" на eof, но не логичнее было бы сбросить флаги и продолжить чтение потока, а не обходить get() неугодные символы?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru