std::basic_ios<CharT,Traits>::good
来自cppreference.com
bool good()const; | ||
若流上的最近 I/O 操作成功完成则返回 true。明确说即返回 rdstate()==0 的结果。
设置流状态位的条件列表,见 ios_base::iostate。
目录 |
[编辑]参数
(无)
[编辑]返回值
若流未出现错误则为 true,否则为 false。
[编辑]示例
运行此代码
#include <cstdlib>#include <fstream>#include <iostream> int main(){constchar* 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. 打开文件 test.txt 失败 - ""错误标记之一为 true\n";returnEXIT_FAILURE;} // 典型的 C++ I/O 循环使用 I/O 函数的返回值为循环控制条件,此处使用 operator bool()for(int n; file >> n;)std::cout<< n <<' ';std::cout<<'\n'; if(file.bad()){std::cout<<"#2. 读取时发生 I/O 错误 - badbit 为 true\n";returnEXIT_FAILURE;}elseif(file.eof())std::cout<<"#3. 成功抵达文件末尾 - eofbit 为 true\n""这没问题,即便 file.good() 为 false\n";elseif(file.fail())std::cout<<"#4. 遇到非整数数据 - failbit 为 true\n";}
可能的输出:
10 11 12 #4. 遇到非整数数据 - failbit 为 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 |