std::stringstream
中可能出现的错误是什么?
具体而言,std::stringstream
来自std::ios
,这意味着它有std::ios::rdstate
。在std::ios::rdstate
中,设置failbit
或badbit
时出现问题。因此,在failbit
中设置badbit
和std::stringstream
的可能方法是什么?
设置failbit
和badbit
编译器/实现的方法是依赖还是由标准指定?
答案 0 :(得分:3)
C ++ 11中的表124指定了各个位的含义:
badbit 表示输入或输出序列(例如 来自文件的不可恢复的读错误;)
eofbit 表示输入操作已到达输入序列的末尾;
failbit 表示输入操作无法读取预期的字符,或 输出操作无法生成所需的字符。
关于设置这些位的操作,这些位分散在各个地方的标准周围,你可以只搜索掩码的出现位置,找出设置和清除它的位置。< / p>
对于示例,可以设置badbit
的一种方式是在operator>>
istream
27.7.2.2 Formatted input functions
调用期间使用获取异常。这在{{1}}中有详细说明。整个标准中还有许多其他地方给出类似的描述。