我正在尝试使用std::istream
并希望使用异常来简化错误处理来解析文件。但是即使启用了,流也不会在eof上引发异常。
考虑以下代码段:
std::string line("Lorem ipsum");
std::istringstream is(line);
is.exceptions(std::ios::eofbit | std::ios::failbit);
std::string value1, value2, value3;
is >> value1;
std::cout << is.eof() << std::endl;
is >> value2;
std::cout << is.eof() << std::endl;
is >> value3;
std::cout << is.eof() << std::endl;
读取value2后,eof()
返回true但在任何时候都不会抛出异常,即使流被指示这样做(参见第 3 行)。最后,value3包含一个空字符串。
我错过了什么?
以防万一:我正在使用作为 Xcode 4.6.1 一部分的 LLVM libc++(支持 C++11 的 LLVM C++)。