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));
}
我将结构数组保存为二进制。 (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));
}