ini文件读写时遇到的一个问题
最近在写一个小的应用,要把指定类型的文件扫描出来,然后删除。我把要删除的文件类型和可以使用的文件类型保存在一个ini文件中,这里遇到一个问题:当程序第二次运行的时候,要删除的文件类型或者可以使用的文件类型可能有一个是不正确的,因为我已经在程序中清空了的。后来发现了问题原因,如果你的ini文件中某个key对应的value如果不存在,那么记得清空该value,否则你上次写入的记录还在,再次读取的时候就读取的还是上次的!
list<CString>::iterator iter_beg = m_listAvailableType.begin(), iter_end = m_listAvailableType.end(); CString strTmp; while (iter_beg != iter_end) { strTmp += *iter_beg++ + _T(" "); } if (0 == ::WritePrivateProfileString(_T("extensions"), _T("available"), //这里记得清空:如果没有这种类型的文件!如果没有清空,上次的记录还在文件中保存着 strTmp.IsEmpty() ? NULL : strTmp, _T(".\\config.ini"))) { TRACE(_T("GetLastError(): %d\n"), GetLastError()); }
strTmp.IsEmpty() ? NULL : strTmp这个判断显得很重要,这保证每次的读取工作都正确