C++中实现读取一个二进制文件。原始文件中存储的是float型数据,占4个字节。程序运行过程中采用float型 直接读取,则每次默认读取8个字节,导致出现异常。尝试采用int型做为中间“容器”可以正常读取。以下为代码片段及输出结果。
...
//* 未能正确解析部分***//
float* ff = new float[12];
int fsize = sizeof(float);
inFile.read((char*)ff, sizeof(float) * 12);
std::cout << ff[0] << std::endl;
std::cout << ff[1] << std::endl;
std::cout << ff[2] << std::endl;
//* 未能正确解析部分***//
//* 正确解析部分***//
float x;
int i = 0;
stream >> i;
x = (float&)i;
std::cout << x << std::endl;
//* 正确解析部分***//
...
异常部分输出信息
std::cout << ff[0] << std::endl;--->3.16438e+28
std::cout << ff[1] << std::endl;--->1.29613e+32
std::cout << ff[2] << std::endl;--->-7.69218e-35
正常部分输出信息
std::cout << x << std::endl;--->1.04366e+06