读取二进制文件并解释为整数



我试图将二进制文件解释为一系列整数并将值读取到向量。 但是,行 ifs>> n;总是返回 0 和 eof 总是假的,文件位置不会更新。 如果我将类型更改为 char,它可以工作,但这不是想要实现的。 如何使代码按我想要的方式工作?

int readAsNumber(const char* fileName, vector <int> &content)
{
ifstream ifs;
int n;
ifs.open(fileName, ifstream::in | ifstream::binary);
while (ifs.eof() == false)   // Never terminates 
{
ifs >> n;               // Always sets n = 0
content.push_back(n);   // Saves 0
}
ifs.close();
return 0;
}

输入运算符>>读取输入并将其解释为文本

如果文件包含原始二进制数据,则还需要作为原始数据读取:

int value;
while (ifs.read(reinterpret_cast<char*>(&value), sizeof value))
content.push_back(value);

请记住,像这样存储原始二进制数据是不便携的,并且确实不建议这样做。

最新更新