std::basic_ios<CharT,Traits>::eof
bool eof() const; |
Возвращает true, если связанный поток достиг конца файла. В частности, возвращает true, если eofbit установлен в rdstate().
Список условий, устанавливающих eofbit, см. в разделе ios_base::iostate.
Параметры
(нет)
Возвращаемое значение
true, если произошло достижение конца файла, и false в противном случае.
Примечания
Эта функция сообщает только состояние потока, установленное последней операцией ввода-вывода; она не проверяет связанный источник данных. Например, если последней операцией ввода-вывода был вызов get(), который вернул последний байт файла, eof() возвращает false. Следующий вызов get() не сможет ничего прочитать и установит eofbit. Только после этого eof() вернёт true.
При обычном использовании обработка входного потока прекращается при любой ошибке. Затем eof() и fail() можно использовать для различения различных условий ошибки.
Пример
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
std::ifstream file("test.txt");
if (!file) // operator! is used here
{
std::cout << "File opening failed\n";
return EXIT_FAILURE;
}
// typical C++ I/O loop uses the return value of the I/O function
// as the loop controlling condition, operator bool() is used here
for (int n; file >> n;)
std::cout << n << ' ';
std::cout << '\n';
if (file.bad())
std::cout << "I/O error while reading\n";
else if (file.eof())
std::cout << "End of file reached successfully\n";
else if (file.fail())
std::cout << "Non-integer data encountered\n";
}
См. также
В следующей таблице показаны значения методов доступа basic_ios (good(), fail() и т. д.) для всех возможных комбинаций флагов ios_base::iostate:
Флаги ios_base::iostate |
Методы доступа basic_ios |
|||||||
eofbit |
failbit |
badbit |
good() |
fail() |
bad() |
eof() |
operator bool |
operator! |
| false | false | false | true | false | false | false | true | false |
| false | false | true | false | true | true | false | false | true |
| false | true | false | false | true | false | false | false | true |
| false | true | true | false | true | true | false | false | true |
| true | false | false | false | false | false | true | true | false |
| true | false | true | false | true | true | true | false | true |
| true | true | false | false | true | false | true | false | true |
| true | true | true | false | true | true | true | false | true |
| проверяет достижение конца файла (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ios/eof