在C ++中,如果我必须知道fstream
打开错误的错误号/错误是什么;我怎么知道呢考虑一下,fstream
使用以下方法抛出异常:
file.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
换句话说,所有异常是否也必须设置错误编号?
答案 0 :(得分:0)
警告:以下所有内容都是特定于实现且不可移植的!
通过我的实现,至少在Linux上,C ++ iostream似乎是stdio.h
中较低级别C函数的包装器。所以 - 再次,在我的实现 - 在errno
出现问题后,可以读取std::fstream
值:
#include <iostream>
#include <cerrno>
std::ifstream f{filename};
std::string line;
while (f >> line) {
// Do something with line
}
if (f.rdstate() == std::ios_base::badbit) {
int e = errno; // Find the Posix error number
}
还有一个警告:这不是便携式的,可能不适合你。我提到了吗?