C++使用Unicode字符集时配置文件读写

要注意Unicode字符和ANSI字符的转换,以免出现乱码


例如配置文件名称为Setting.ini


其中内容如下:

[Parameter]
CameraID=1024
FilePath=E:/Output/

读配置文件中数字和字符串代码如下:

int CameraID;
char path[128];
void LoadPara() 
{
LPCWSTR strPath(TEXT("./Setting.ini"));
LPCWSTR strTitle( TEXT("Parameter"));
LPCWSTR strKey;

strKey = TEXT("CameraID"); //摄像机ID,默认1024
CameraID = GetPrivateProfileInt(strTitle, strKey, 1024, strPath);//整形参数

const int BUFF_LEN = 128;//读取字符串的缓存
TCHAR buff[BUFF_LEN];
int iLength=0;

strKey = _T("FilePath");//结果存储路径
GetPrivateProfileString(strTitle, strKey, L"E:/Output/",buff, BUFF_LEN, strPath);//字符串参数
iLength = WideCharToMultiByte(CP_ACP, 0, buff, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, buff, -1, path, iLength, NULL, NULL);//TCHAR转char
}


void SavePara()
{
CString strPath(_T("./Setting.ini"));
CString strTitle( _T("Parameter"));
CString strKey;
CString strValue;

strValue.Format(_T("%d"),(CameraID));
strKey = _T("CameraID"); //
WritePrivateProfileString(strTitle,strKey,strValue,strPath);

strValue.Format(_T("%s"),CStringW(path));
strKey = _T("FilePath"); //
WritePrivateProfileString(strTitle,strKey,strValue,strPath);
}


你可能感兴趣的:(C++)