wcstombs在中文环境下的一个设置

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

你可能感兴趣的:(存储)