我有一种从 int
数组写入二进制文件的方法。 (也可能是错的)
void bcdEncoder::writeBinaryFile(unsigned int packedBcdArray[], int size)
{
fstream binaryIo;
binaryIo.open("PridePrejudice.bin", ios::out| ios::binary | ios::trunc);
binaryIo.seekp(0);
binaryIo.write((char*)packedBcdArray, size * sizeof(packedBcdArray[0]));
binaryIo.seekp(0);
binaryIo.close();
}
我现在需要读回那个二进制文件。最好让它读回另一个 unsigned int
的数组,而不会丢失任何信息。
我有类似下面的代码,但我不知道如何读取二进制文件,也不知道如何将它读入 int
s 的数组。
void bcdEncoder::readBinaryFile(string fileName)
{
// myArray = my dnynamic int array
fstream binaryIo;
binaryIo.open(fileName, ios::in | ios::binary | ios::trunc);
binaryIo.seekp(0);
binaryIo.seekg(0);
binaryIo.read((int*)myArray, size * sizeof(myFile));
binaryIo.close();
}
问题:
如何完成读取二进制文件的功能实现?
原文由 Justin Tennant 发布,翻译遵循 CC BY-SA 4.0 许可协议
为了简化读取操作,请考虑在数据之前存储
size
(即数组中的元素数):读取看起来像: