码迷,mamicode.com
首页 > 其他好文 > 详细

CString 与 std::string 相互转化

时间:2015-09-16 00:53:18      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

 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();//注意,可写在同一行

 


 

CString 与 std::string 相互转化

标签:

原文地址:http://www.cnblogs.com/whl2012/p/4811912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!