C++中,CString,string,char*的相互转换

    //定义三种类型
	CString CString1="CString";
	std::string string1="string";
	CHAR * char1="char1";

//窄字符串集:
	//一、CString 字串转 string ,char*
	string1=CString1;
	char1=CString1.GetBuffer();
	CString1.ReleaseBuffer();//释放掉字串缓冲区

	//二、string 转CString char*
	string1="string1";
	CString1=string1.data(); 
	//char1=string1.data();//错误的,返回类型必须定义为const
	new char[string1.length()+1];
	strcpy(char1,string1.data());
	三、char* 转CString ,string
	char1="char1";
	CString1=char1;
	string1=char1;

//宽字符集:
	CString CString1=L"CString"; //字符串前面需要加上L
	std::wstring string1=L"string"; 
	WCHAR * char1=L"char1"; //CHAR*变为WCHAR*
	//一、CString 字串转 string ,char*
	string1=CString1;
	char1=CString1.GetBuffer();
	CString1.ReleaseBuffer();//释放掉字串缓冲区

	//二、string 转CString char*
	string1=L"string1";
	CString1=string1.data();
	//char1=string1.data();
	new WCHAR[string1.length()+1];  
	wcscpy(char1,string1.data());  //内存拷贝函数也改变了。
	//三、char* 转CString ,string
	char1=L"char1";
	CString1=char1;
	string1=char1;

//使用宏兼容窄字集和宽字集
	CString CString1=  _T("CString"); //对字符串使用_T可以解决字符集的问题
	std::string string1=_T("string");
	TCHAR * char1=_T("char1"); //定义时使用TCHAR*

	//一、CString 字串转 string ,char*
	string1=CString1;
	char1=CString1.GetBuffer();
	CString1.ReleaseBuffer();//释放掉字串缓冲区

	//二、string 转CString char*
	string1=_T("string1");
	CString1=string1.data();
	//char1=string1.data();
	new TCHAR[string1.length()+1];
	strcpy(char1,string1.data()); //这里注意,函数不能改变,也就是说,代码里面还需要使用其它宏进行判断。
	//三、char* 转CString ,string
	char1=_T("char1");
	CString1=char1;
	string1=char1;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值