c ++读取和写入二进制文件的对象

时间:2014-10-04 20:05:00

标签: c++ binaryfiles

我试图读取一个数组对象(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循环,而不是数组中没有元素

0 个答案:

没有答案