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这个判断显得很重要,这保证每次的读取工作都正确

image

posted @ 2012-03-30 08:59  kcy-666  阅读(506)  评论(0编辑  收藏  举报