首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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,定义了以下常量:

Constant

Explanation

goodbit

no error

badbit

irrecoverable stream error

failbit

input/output operation failed (formatting or extraction error)

eofbit

associated 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;集两者eofbitfailbit*没有足够的字符来完成布尔值的解析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。
  • 所有提取算子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 flags

basic_ios accessors

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

代码语言:txt
复制
 ? cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com