【发布时间】:2012-08-23 02:33:41
【问题描述】:
在 C++ 中,每个流都有一个 bad 位:
此标志由在读取或写入数据时发生错误时对流执行的操作设置,通常会导致流的完整性丢失。
什么会导致流“失去完整性”并进入bad 状态?这与fail 状态不同,这通常发生在输入流尝试将值存储到无法接受所述值的变量中(例如尝试将字符串存储到整数变量中)。
请注意,这个问题是c++ file bad bit 的更一般形式,专门针对文件输入流;这个问题并不完全重复,因为它通常适用于输入和输出流。
【问题讨论】:
-
可能是遇到无效多字节序列的多字节编码流?
-
@KerrekSB,这可能会设置
fail位,而不是bad位,因为流可以由ios::clear()和ios::ignore()恢复。这只是无效输入的情况;我认为这不会导致流失去完整性。