std::basic_ios<CharT,Traits>::good
bool good() const; |
Возвращает true , если последнее операция ввода-вывода на потоке завершилась успешно. В частности, возвращает результат rdstate() == 0.
См. ios_base::iostate для списка условий, устанавливающих биты состояния потока.
Параметры
(нет)
Возвращаемое значение
true если все флаги ошибок потока равны false, false в противном случае.
Пример
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
const char* fname = "/tmp/test.txt";
std::ofstream ofile{fname};
ofile << "10 " << "11 " << "12 " << "non-int";
ofile.close();
std::ifstream file{fname};
if (!file.good())
{
std::cout << "#1. Opening file test.txt failed - "
"one of the error flags is true\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 << "#2. I/O error while reading - badbit is true\n";
return EXIT_FAILURE;
}
else if (file.eof())
std::cout << "#3. End of file reached successfully - eofbit is true\n"
"This is fine even though file.good() is false\n";
else if (file.fail())
std::cout << "#4. Non-integer data encountered - failbit is true\n";
}Возможный вывод:
10 11 12 #4. Non-integer data encountered - failbit is true
См. также
В следующей таблице показано значение аксессоров 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/w/cpp/io/basic_ios/good