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, "");