读取二进制文件并解释为整数
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);
请记住,像这样存储原始二进制数据不可移植,确实不推荐。
我正在尝试将二进制文件解释为一系列整数并将值读取到向量中。 然而,行 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);
请记住,像这样存储原始二进制数据不可移植,确实不推荐。