GetPrivateProfileInt和GetPrivateProfileString

GetPrivateProfileInt,GetPrivateProfileString(同样包括)这两个函数其实非常简单,一般调用ini等其他文件数据然后与程序进行匹配。原型如下:

DWORD GetProfileString(
LPCTSTR lpAppName, // 节名
LPCTSTR lpKeyName, // 键名,读取该键的值
LPCTSTR lpDefault, // 若指定的键不存在,该值作为读取的默认值
LPTSTR lpReturnedString, // 一个指向缓冲区的指针,接收读取的字符串
DWORD nSize // 指定lpReturnedString指向的缓冲区的大小
)

UINT GetPrivateProfileInt(
LPCTSTR lpAppName, // 同上
LPCTSTR lpKeyName, // 同上
INT nDefault, // 若指定的键名不存在,该值作为读取的默认值
LPCTSTR lpFileName // 同上
)

我觉得最容易忽略和犯错的地方为红色文字,大家千万要记住以下几点:

           1.文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.

   2.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .

   3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\TEST.ini".

 

以下是转换后的代码,具体改动如下: 1. 将 char 类型的字符串转为 std::string 类型; 2. 将 sprintf 函数替换为 snprintf 函数; 3. 将 GetPrivateProfileString 函数替换为读取文件内容并解析的方式; 4. 将 ReadFileAndAddFeaData 函数替换为读取文件内容并拷贝的方式; 5. 将 CSVNEW 和 delete[] 替换为 new 和 delete。 ``` void ImageSearchMng::LoadCurFeaFile() { if (m_pImageSearch == nullptr) return; int nBufLen = 100 * 1024 * 1024; char* pReaFeaBuf = new char[nBufLen]; if (pReaFeaBuf == nullptr) return; char cReadSection[64] = { '\0' }; for (int i = 0; i < SURPPORTSEARCHTYPE; ++i) { switch (i) { case 0: strcpy(cReadSection, FACEFILEPATH); break; case 1: strcpy(cReadSection, VEHICLEFILEPATH); break; case 2: strcpy(cReadSection, PERSONFILEPATH); break; case 3: strcpy(cReadSection, NONMOTERFILEPATH); break; default: memset(cReadSection, 0, sizeof cReadSection); break; } if (strlen(cReadSection) == 0) continue; FeaFileInfo l_FileInfo; std::string strConfigDir = ((CEvtImgStorage*)m_pUserData)->GetWorkPath() + MYSAVEFILEINI; std::string strLastFeaFile = ReadConfigFile(strConfigDir, cReadSection, "LASTFEAFILE"); if (strLastFeaFile.length() > 0) { strcpy(l_FileInfo.cPath, strLastFeaFile.c_str()); l_FileInfo.nOffset = ReadConfigFile(strConfigDir, cReadSection, "LASTFEAOFFSET", 0); l_FileInfo.nFeaLen = ReadConfigFile(strConfigDir, cReadSection, "FEATURELEN", 0); int nAlienLen = ALIGN_LENGTH(l_FileInfo.nFeaLen + 128, FILESETTIONLEN); snprintf(l_FileInfo.cPath, MAX_PATH, "%s/Feature.idx", l_FileInfo.cPath); if (m_ImgSvrInfo.m_iSvrInitAddDone == 3) { if (l_FileInfo.nOffset > 0) ReadFileContent(l_FileInfo.cPath, l_FileInfo.nOffset, nAlienLen, pReaFeaBuf, nBufLen); m_ImgSvrInfo.m_iSvrInitAddDone = 2; } SetCurFeaFile(i, l_FileInfo); } } delete[] pReaFeaBuf; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值