我试图读取一个数组对象(Array是一个使用读写函数从二进制文件读取和写入的类。 到目前为止,写入函数仍然有效,但出于某种原因,它无法正确读取文件。 这是写函数:
void writeToBinFile(const char* path) const
{
ofstream ofs(path, ios_base::out | ios_base::binary | ios_base::trunc);
if (ofs.is_open())
{
ofs.write((char*)this, sizeof(Array<T>));
}
}
这是读取功能:
void readFromBinFile(const char* path)
{
ifstream ifs(path, ios_base::in | ios_base::binary);
if (ifs.is_open())
{
ifs.read((char*)this, sizeof(Array<T>));
}
}
这些是类字段:
T* m_data;
unsigned int m_size;
unsigned int m_elementCount;
我使用以下代码编写然后阅读:
Array<int> arr3(5);
arr3[0] = 38;
arr3[1] = 22;
arr3[2] = 55;
arr3[3] = 7;
arr3[4] = 94;
arr3.writeToBinFile("binfile.bin");
Array<int> arr4(5);
arr4.readFromBinFile("binfile.bin");
for (unsigned int i = 0; i < arr4.elementCount(); i++)
{
cout << "arr4[" << i << "] = " << arr4[i] << endl;
}
并且它只是跳过for循环,而不是数组中没有元素