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

Reading a binary file and interpret as integers

我正在尝试将二进制文件解释为一系列整数并将值读取到向量中。 然而,行 ifs >> n; 总是 returns 0 并且 eof 总是 false,文件位置没有更新。 如果我将类型更改为 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;
}

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

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

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

请记住,像这样存储原始二进制数据不可移植,确实不推荐。