(C++) CString转string 怎么转!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:04:46
--------------------------------------------------------------------
CString wo("xxxxcc");
string s;
s=wo.GetBuffer();
//失败了!!!
//错误信息
1>f:\c++试验\count_machine\count_machine\count_machinedlg.cpp(185) : error C2679: 二进制“=”: 没有找到接受“wchar_t *”类型的右操作数的运算符(或没有可接受的转换)
1> f:\vs 2005 主程序目录\vc\include\xstring(875): 可能是“std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const std::basic_string<_Elem,_Traits,_Ax> &)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> f:\vs 2005 主程序目录\vc\include\xstring(880): 或“std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const _Elem *)”
1> with
1>

CString na;
na=_T(m_name);//解决编码问题
string line(na.GetBuffer(na.GetLength()));
na.ReleaseBuffer(-1);

CString str="fdsfadfadssssss";
cstring m_str;
int a=str.Getlenth();
for(int i=0;i<a;i++)
{
m_str+=str;
}

因为2005默认是UNICODE编码的,所以LPCTSTR实际上就是const wchar_t*,而string是MBCS编码的,所以转换就有问题

可以用MFC提供的一套X2X的宏来转换
string s;
USES_CONVERSION:
s = T2CA((LPCTSTR)wo);

T2CA就是将TCHAR字符串转为const char*

(LPCTSTR)CString 将其转换成字符串 在就可以随便怎么做了

CString strTemp = "123";
string str = (LPTSTR)(LPCTSTR)strTemp;