CString 与 std::string 相互转化
MFC中CString 与 std::string 相互转化
CString实际是CStringT, 也就是模板类,
在UNICODE环境下,实际是CStringW,
在多字符集环境下,实际是CStringA
std::string就是多字符集的.
UNICODE环境下
- CStringW-->std::string
CString实际是CStringW,要转换成多字符集,需进行转码。使用WideCharToMultiByte 转换成多字符集,然后再构造std::string
- std::string-->CStringW
因为CStringT模板类已经自动做了 char* 到 wchar_t* 的转码。
- 实例
//使用Unicode 字符集 CString strCS("HelloWorld"); USES_CONVERSION; std::string strS(W2A(strCS)); //CString-->std::string CString strCStemp; strCStemp = strS.c_str();//std::string-->CString
注意:std::string-->CString时,不可以写在同一行:
CString strCStemp = strS.c_str();//ERROR
多字符集
CString 实际就是CStringA.
//CStringA-->std::string CString strCS("HelloWorld"); std::string strS; strS = strCS.GetBuffer(0); //std::string-->CStringA CString strCStemp = strS.c_str();//注意,可写在同一行