在线文档教程
C++
输入/输出 | Input/output

std::ios_base::iostate

科技促进发展:监督办[医]基地::碘酸盐

typedef /*implementation defined*/ iostate;
static constexpr iostate goodbit = 0;
static constexpr iostate badbit = /*implementation defined*/ static constexpr iostate failbit = /*implementation defined*/ static constexpr iostate eofbit = /*implementation defined*/

指定流状态标志。这是一个BitmaskType,定义了以下常量:

ConstantExplanation
goodbitno error
badbitirrecoverable stream error
failbitinput/output operation failed (formatting or extraction error)
eofbitassociated input sequence has reached end-of-file

伊夫比特

eofbit由下列标准库函数设置:

  • 字符串输入函数std::getline如果它通过到达流的末尾完成,而不是到达指定的终止字符。

  • 的数字输入重载。basic_istream::operator>>如果在读取下一个字符时遇到流的结尾,则在num_get::get处理。取决于解析状态,failbit可能同时设置,也可能不同时设置:例如,int n; istringstream buf("1" buf >> n;集eofbit,但不是failbit*整数1已成功解析并存储在n另一方面,bool b; istringstream buf("tr" buf >> boolalpha >> b;集两者eofbit和failbit*没有足够的字符来完成布尔值的解析true...

  • 字符提取重载operator>>std::basic_istream,如果流的末尾在限制%28(如果有%29)之前到达,则提取字符数。

  • std::get_timeI/O机械手和任何std::time_get解析功能:time_get::get,,,time_get::get_time,,,time_get::get_date等等,如果在处理解析预期日期/时间值所需的最后一个字符之前到达流的末尾。

  • std::get_moneyI/O机械手和money_get::get函数,如果在处理解析预期货币值所需的最后一个字符之前到达流的末尾。

  • basic_istream::sentry构造函数,在每个格式化输入函数的开头执行:除非skipws位未设置%28例如。通过发行std::noskipws%29,哨兵读取并丢弃前面的空格字符。如果在此操作期间到达输入流的结束,则两个eofbitfailbit设置,并且不发生任何输入。

  • I/O机械手std::ws,如果它在使用空格%28时到达流的末尾,但与格式化的输入哨兵不同,它不设置failbit在这种情况下,%29

  • 未格式化的输入函数basic_istream::read,,,basic_istream::get,,,basic_istream::peek,和basic_istream::getline,当到达溪头的时候。

  • 丢弃输入函数basic_istream::ignore在到达指定的分隔符字符之前到达流的末尾。

  • 即时输入函数basic_istream::readsome,如果basic_streambuf::in_avail回报-1

以下功能明确eofbit作为副作用:

  • basic_istream::putback

  • basic_istream::unget

  • basic_istream::seekg

故障位

故障位由下列标准库函数设置:

  • basic_istream::sentry构造函数,在每个输入函数的开头执行,如果eofbitbadbit已在流上设置,或者在使用前导空格时遇到流的结束。

  • basic_ostream::sentry构造函数,在每个输出函数的开头执行,在实现定义的条件下执行。

  • operator>>(std::basic_string<>)如果函数没有从输入流中提取字符。

  • operator>>(std::complex<>)如果函数无法提取有效的复数。

  • 的字符数组和单个字符重载。operator>>如果他们不能提取任何字符。

  • 流超载basic_istream::operator>>如果Streambuf参数是空指针,或者没有向Streambuf中插入字符。

  • 流超载basic_ostream::operator<<如果函数没有插入字符。

  • operator>>(std::bitset<>)如果函数没有从输入流中提取字符。

  • std::getline如果函数没有提取字符,或者它设法提取basic_string::max_size输入流中的字符。

  • 的数值、指针和布尔输入重载。basic_istream::operator>>%28技术上,num_get::get如果不能将输入解析为有效值,或者解析的值不适合目标类型,则调用%29。

  • 时间输入机械手std::get_time28%技术上time_get::get如果不能根据给定的格式字符串将输入明确解析为时间值,则调用%29。

  • 货币输入机械手std::get_money28%技术上money_get::get如果不能根据区域设置规则将输入明确解析为货币值,则调用%29。

  • 所有提取算子RandomNumberEngine斯,如果遇到错误的输入。

  • 所有提取算子RandomNumberDistribution斯,如果遇到错误的输入。

  • 未格式化的输入函数basic_istream::get如果他们不能提取任何字符。

  • basic_istream::getline,如果它不提取字符,如果它在未遇到分隔符的情况下填充所提供的缓冲区,或者如果所提供的缓冲区大小小于1,则为。

  • basic_istream::read,如果在提取所有请求的字符之前,输入流上发生了文件结束条件。

  • basic_istream::seekg论失败

  • basic_ostream::tellp论失败

  • 的建设者std::basic_fstream,,,std::basic_ifstream,和std::basic_ofstream如果无法打开文件,则使用文件名参数。

  • basic_fstream::open,,,basic_ifstream::open,和basic_ofstream::open如果无法打开文件。

  • basic_fstream::close,,,basic_ifstream::close,和basic_ofstream::close如果无法关闭文件。

坏蛋

坏位由下列标准库函数设置:

  • basic_ostream::put如果由于任何原因,它无法将字符插入输出流中。

  • basic_ostream::write如果由于任何原因,它无法将字符插入输出流中。

  • 格式化输出函数运算符<<,,,std::put_money,和std::put_time,如果它们在完成输出之前遇到输出流的末尾。

  • basic_ios::init调用以使用空指针初始化流时,rdbuf()

  • basic_istream::putbackbasic_istream::unget在流上调用空值时rdbuf()

  • basic_ostream::operator<<(basic_streambuf*)当空指针作为参数传递时。

  • basic_istream::putbackbasic_istream::unget如果

rdbuf()->sputbackc()或rdbuf()->sungetc()回归traits::eof()...

  • basic_istream::sync,,,basic_ostream::flush上的每个输出函数unitbuf输出流,如果rdbuf()->pubsync()回报-1

  • 如果关联流缓冲区%28例如的任何成员函数引发异常,则每个流I/O函数。保险杠%28%29,xspon%28%29,sgetc%28%29,溢出%28%29,等等

  • ios_base::iwordios_base::pword在故障%28等情况下。未能分配内存%29

另见

下表显示basic_ios访问器%28good(),,,fail()的所有可能组合的%29。ios_base::iostate旗帜:

ios_base::iostate flagsbasic_ios accessors
eofbitfailbit
falsefalse
falsefalse
falsetrue
falsetrue
truefalse
truefalse
truetrue
truetrue

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/io/IOS[医]碱/碘