std::basic_ios<CharT,Traits>::bad

来自cppreference.com
< cpp‎ | io‎ | basic ios
 
 
 
 
bool bad() const;

若关联的流上已出现不可恢复的错误则返回 true。明确说即若 rdstate() 中设置了 badbit 则返回 true

设置 badbit 的条件列表见 ios_base::iostate

参数

(无)

返回值

若出现不可恢复的错误则为 true,否则为 false

示例

#include <cstdlib>
#include <fstream>
#include <iostream>
 
int main()
{
    std::ifstream file("test.txt");
    if (!file) // 此处使用了 operator!
    {  
        std::cout << "文件打开失败\n";
        return EXIT_FAILURE;
    }
 
    // 典型的 C++ I/O 循环以 I/O 函数的返回值为循环控制条件,
    // 此处使用了 operator bool()
    for (int n; file >> n;)
       std::cout << n << ' ';
    std::cout << '\n';
 
    if (file.bad())
        std::cout << "读取时发生了 I/O 错误\n";
    else if (file.eof())
        std::cout << "成功抵达文件末尾\n";
    else if (file.fail())
        std::cout << "遇到了非整数数据\n";
}

参阅

下表显示 basic_ios 访问器(good()fail() 等)对于 ios_base::iostate 标志的所有可能组合的值:

ios_base::iostate 标志basic_ios 访问器
eofbitfailbitbadbitgood()fail()bad()eof()operator booloperator!
falsefalsefalsetruefalsefalsefalsetruefalse
falsefalsetruefalsetruetruefalsefalsetrue
falsetruefalsefalsetruefalsefalsefalsetrue
falsetruetruefalsetruetruefalsefalsetrue
truefalsefalsefalsefalsefalsetruetruefalse
truefalsetruefalsetruetruetruefalsetrue
truetruefalsefalsetruefalsetruefalsetrue
truetruetruefalsetruetruetruefalsetrue