解决方法通过使用ATL字符串转换宏
1.Unicode字符集
(1)std::string转CString
std::string name = "convert";
CString c_name = CA2T(name.c_str());
所以CA2T也就是CA2W就是将多字符集转换为宽字符UNICODE,也可写成CA2W。
CA2T含义:
C:convert,转换的意思
A:ANSI字符串,也就是Muti-Byte
2:to
T:中间类型,如果定义了_UNICODE,则T表示W;如果定义了_MBCS,则T表示A
W:宽字符串,也就是UNICODE
(2)CString转std::string
CString c_name = _T("convert");
std::string str = CW2A(c_name.GetString());
所以CT2A其实就是CW2A就是将Unicode转换为多字符集ASCII,也可写成CW2A
CT2A含义
C:convert,转换的意思
T:中间类型,如果定义了_UNICODE,则T表示W;如果定义了_MBCS,则T表示A
W:宽字符串,也就是UNICODE
A:ANSI字符串,也就是Muti-Byte。
2.多字节字符集
(1)std::string转CString
std::string name = "convert";
CString c_name; c_name = name.c_str();
(2)CString转std::string
CString c_name = "convert";
std::string str = c_name.GetString();