如果ifstream::getline调用没有找到分隔符,我知道它设置了failbit,但它是否也清除了缓冲区,或者它是否保留缓冲区完整,只是设置了失败位让你知道?
对于输入流的不同状态似乎有一些混淆(正确的,它们是令人困惑):
c++标准,表124
badbit
表示输入或输出序列的完整性丢失(例如从文件中读取不可恢复的错误);eofbit
表示输入操作到达输入序列的末端;failbit
表示输入操作读取预期字符失败,或者输出操作未能生成所需的字符。
即,当basic_istream::getline(char_type* s, std::streamsize count, char_type delim)
提取count-1
字符而没有找到分隔符(-1
用于存储终止的