我正在尝试使用以下代码从文件中读取数据。(请注意,您需要在 GCC 上启用 C++11 功能才能编译。)
#include <fstream>
typedef unsigned char byte;
int main()
{
std::string filename = "test.cpp";
std::basic_ifstream<byte> in(filename, std::basic_ifstream<byte>::in | std::basic_ifstream<byte>::binary);
in.exceptions(std::ios::failbit | std::ios::badbit);
byte buf[5];
in.read(buf, 5);
return 0;
}
但是,在读取数据时出现异常:
在抛出 'std::bad_cast' 的实例后调用终止 什么():std::bad_cast
in.read(buf, 5)
调用命令时会发生这种情况。
我知道我可以通过不设置我设置的异常掩码来抑制此异常,但这并不能解决问题,它只会掩盖它。如果没有异常掩码,代码将继续工作,但会读取 0 个字符。
有谁知道为什么会抛出这个异常?我如何让它消失?