0 / 0 / 0
Регистрация: 21.02.2018
Сообщений: 19
1

Установить failbit для объекта ifstream

30.11.2018, 11:41. Показов 1025. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Пытаюсь считывать объекты из файла. Задача такова - если объект мне каким то образом не понравится, необходимо поставить в объекте ifstream failbit = true, чтобы (file >> buffer) была false. Затем failbit нужно откатить в false, для дальнейшей работы с тем же объектом ifstream.

Приблизительный код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ifstream file("randomname.txt"); //Объект ifstream
T buffer; //Любой тип
while (!file.eof())
{ 
    //Тут установить failbit в false, если он true
     file>>buffer;
    if(!file.fail()) //Если объект удовлетворяет условию (что значит что failbit false)
    {
        
        ......
        lst.add(buffer); //Сделать что-то с объектом
    }
    else (Считывание из файла не успешно, а значит failbit = true)
        //Установить failbit в false
}
А вот приблизительный код перегрузки >> для ifstream и типа T
C++
1
2
3
4
5
6
7
8
ifstream& operator>>(ifstream& is, T& object_T)
{
      is >> T.field1; //Какое-то чтение //Пусть даже оно будет успешным
      if(T == (...)) //Если объект не нужен, то
            //Поставить failbit для is.
            //И пусть чтение даже прошло успешно, это неважно
      return is;
}

Суть в том что при безуспешном чтении с объектом не выполнятся действия,а затем флаг failbit вернётся в false. Собственно как его установить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2018, 11:41
Ответы с готовыми решениями:

Как установить Failbit?
Подскажите, вот перегруженный оператор istream& operator>>(istream &in, Gender &G) { try ...

Передача объекта ifstream в качестве аргумента функции
Как решить данную проблему? vector<DataPerson> GetVector() { ifstream file("input.txt"); if...

Создание объекта ifstream вызывает ошибки LNK2038 и LNK2005 в полностью рабочем проекте
Пишу я свой проект на Vulkan(он к ошибке не имеет отношения) , всё работало прекрасно до того...

Флаг failbit для перенаправления строкового потока; почему он всегда у меня поднят?
#include <windows.h> #include <stdio.h> #include <sstream> using namespace std; int main()...

1
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
30.11.2018, 17:22 2
Как ты тогда отличишь настоящий fail от своего?
0
30.11.2018, 17:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2018, 17:22
Помогаю со студенческими работами здесь

Как установить рамку для окна ActiveX объекта?
Как установить рамку для окна ActiveX объекта?

Fseek() для ifstream
Знаю, что есть два вида открытия и закрытие файла. 1) Это чистый Си, когда: FILE * pf, * pr; ...

когда failbit устанавливается в 1?
при достижении конца файла? try { ifstream fin("file.txt");...

Ifstream для нескольких файлов
При записи ifstream fin("vuz3.txt"); ifstream fin("spec3.txt"); for(i=0;i<n;i++) ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru