ifstream struct read(我的代码有什么问题??)

ifstream struct read (What's wrong with my code??)

我将结构数组保存为二进制。 (fIn.write)

我用下面的代码阅读了它。

std::ifstream fIn(LOG_PATH, std::ios::in|std::ios::binary);
...
IAttackSave_t IAttackSave;
while(fIn.read((char*)&IAttackSave, sizeof(IAttackSave_t)))
{   
        for(uint32 ulIdx = 0; ulIdx < ulCurLogCnt; ++ulIdx)
        {
            LIB_memcpy(Arr_IAttackSave[ulIdx], &IAttackSave, sizeof(IAttackSave_t));
        }
}

但是,(数组)'Arr_IAttackSave' 中的所有元素都具有相同的结构 !!!!

我的代码有什么问题??

先谢谢了。

外层循环逐一读取元素。内部循环用相同的元素覆盖数组的所有元素。两个循环完成后,所有元素都被最后读取的元素覆盖。

相反,您需要这样的东西:

for(uint32 ulIdx = 0; ulIdx < ulCurLogCnt; ++ulIdx)
{
    if (!fIn.read((char*)&IAttackSave, sizeof(IAttackSave_t))) {
        break;
    }
    LIB_memcpy(Arr_IAttackSave[ulIdx], &IAttackSave, sizeof(IAttackSave_t));
}