use*_*447 0 c++ binaryfiles filereader
我有一个包含浮点数的二进制文件,因此每 4 个字节都是一个浮点数。我不确定如何以每四个字节存储为浮点数的方式读取,这样我就可以用它做任何我需要的事情。
这是我的代码:
int main()
{
float i;
std::ifstream inFile("bin_file", std::ios::binary);
while (inFile >> i)
{
std::cout << i;
}
inFile.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它甚至不会进入 while 循环,除非我将 i 定义为字符。我猜这是因为它每次读取 1 个字节并且无法将其存储为浮点数。顺便说一句,我已经检查过并且文件打开了。
谢谢!
inoperator>>流是为格式化数据(即字符串)而设计的。你想改用read:
int main()
{
float i;
std::ifstream inFile("bin_file", std::ios::binary);
while(inFile.read(reinterpret_cast<char*>(&i), sizeof(i))) {
std::cout << i;
}
inFile.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)