CString strTemp;
GetDlgItemText(IDC_EDIT1, strTemp);
LPCTSTR lp;
TCHAR tcTemp[20];
lp = strTemp.GetBuffer(strTemp.GetLength());
wcscpy(tcTemp, lp);
char param[50] = {};
wcstombs(param, tcTemp, 20);挺简单的一段代码。有经验的码农很快就会看出来,这段代码的作用是用来把CString转为char数组内存储。
但是试一下strTemp = L"你好"看看?param里面会存储什么?
答案是空。
这是宽字节串到多字节串转换的基本要求,即必须指定字符集。
为此加入调用setlocale函数设置本地化环境的语句。
setlocale(LC_ALL, "");
本文介绍了一段用于将CString类型变量转换为char数组的代码,并指出了在未指定字符集时存在的问题。通过添加setlocale函数设置本地化环境,解决了宽字节串到多字节串转换时出现的空白问题。
1183

被折叠的 条评论
为什么被折叠?



