std :: stringstream中有哪些可能的错误(设置failbit和badbit的方法)?

时间:2014-10-07 05:15:47

标签: c++ c++11 language-lawyer

std::stringstream中可能出现的错误是什么?

具体而言,std::stringstream来自std::ios,这意味着它有std::ios::rdstate。在std::ios::rdstate中,设置failbitbadbit时出现问题。因此,在failbit中设置badbitstd::stringstream的可能方法是什么?

设置failbitbadbit编译器/实现的方法是依赖还是由标准指定?

1 个答案:

答案 0 :(得分:3)

C ++ 11中的表124指定了各个位的含义:

  

badbit 表示输入或输出序列(例如   来自文件的不可恢复的读错误;)

     

eofbit 表示输入操作已到达输入序列的末尾;

     

failbit 表示输入操作无法读取预期的字符,或   输出操作无​​法生成所需的字符。

关于设置这些位的操作,这些位分散在各个地方的标准周围,你可以只搜索掩码的出现位置,找出设置和清除它的位置。< / p>

对于示例,可以设置badbit的一种方式是在operator>> istream 27.7.2.2 Formatted input functions调用期间使用获取异常。这在{{1}}中有详细说明。整个标准中还有许多其他地方给出类似的描述。