Не хороший стрим при открытии?

Когда я открываю файл в двоичном режиме, существует ли ситуация, когда is_open() является true но good() является false ?

bool ok = false;
std::ifstream stream("test.dat", std::ios::binary)
if (stream.is_open())
{
ok = stream.good();//Does a situation exist where the result of this is false ?
stream.close();
}

0

Решение

Нет: конструктор с двумя аргументами std::ifstream требуется для установки битов сбоя при открытии файла.

§27.9.1.7 [ifstream.cons] / 2

explicit basic_ifstream(const char* s, ios_base::openmode mode = ios_base::in);

звонки rdbuf()->open(s, mode | ios_base::in), Если эта функция возвращает нулевой указатель, вызывает setstate(failbit),

и, для open (),

§27.9.1.4 [filebuf.members] / 2

basic_filebuf<charT,traits>* open(const char* s, ios_base::openmode mode);

Возвращает: this в случае успеха нулевой указатель в противном случае

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]