我试图将二进制文件解释为一系列整数并将值读取到向量。 但是,行 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);
请记住,像这样存储原始二进制数据是不便携的,并且确实不建议这样做。