(C++) CString转string 怎么转!!
--------------------------------------------------------------------CStringwo("xxxxcc...
--------------------------------------------------------------------
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> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> f:\vs 2005 主程序目录\vc\include\xstring(885): 或“std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(_Elem)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> 试图匹配参数列表“(std::string, wchar_t *)”时
--------------------------------------------------------------------
CString wo("xxxxcc");
string s(wo.GetBuffer());
//失败了
//错误信息
1>f:\c++试验\count_machine\count_machine\count_machinedlg.cpp(184) : error C2664: “std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::allocator<_Ty> &)”: 不能将参数 1 从“wchar_t *”转换为“const std::allocator<_Ty> &”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>,
1> _Ty=char
1> ]
1> and
1> [
1> _Ty=char
1> ]
1> 原因如下: 无法从“wchar_t *”转换为“const std::allocator<_Ty>”
1> with
1> [
1> _Ty=char
1> ]
1> 无构造函数可以接受源类型,或构造函数重载决策不明确
-------------------------------------------------------------------
//还有 我把CString所有的成员函数都看了一遍,没有一个的返回值是string的
//那如何才能实现CString到 string的转换啊?
//如果能把CString转成string的话 我就可以有很多处理可以做,
//因为学C++的时候都是用string的
回lijiakxl : 不行啊,我是这么写的
CString wo("xxxxcc");
string s;
s=(LPCTSTR)wo;
//报错
1>f:\c++试验\count_machine\count_machine\count_machinedlg.cpp(185) : error C2679: 二进制“=”: 没有找到接受“LPCTSTR”类型的右操作数的运算符(或没有可接受的转换)
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> &)”
回 lijiakxl:
CString strTemp = "123";
string str = (LPTSTR)(LPCTSTR)strTemp;
报错:
1>f:\vs 2005 主程序目录\vc\include\strstream(139) : error C2061: 语法错误 : 标识符“_DebugHeapTag_func”
error C2440: “初始化”: 无法从“LPTSTR”转换为“std::basic_string<_Elem,_Traits,_Ax>”
无构造函数可以接受源类型,或构造函数重载决策不明确
回vocanicy :
报错
error C2061: 语法错误 : 标识符“_DebugHeapTag_func”
error C2143: 语法错误 : 缺少“;”(在“:”的前面)
error C2143: 语法错误 : 缺少“;”(在“:”的前面) 展开
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> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> f:\vs 2005 主程序目录\vc\include\xstring(885): 或“std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(_Elem)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> 试图匹配参数列表“(std::string, wchar_t *)”时
--------------------------------------------------------------------
CString wo("xxxxcc");
string s(wo.GetBuffer());
//失败了
//错误信息
1>f:\c++试验\count_machine\count_machine\count_machinedlg.cpp(184) : error C2664: “std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::allocator<_Ty> &)”: 不能将参数 1 从“wchar_t *”转换为“const std::allocator<_Ty> &”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>,
1> _Ty=char
1> ]
1> and
1> [
1> _Ty=char
1> ]
1> 原因如下: 无法从“wchar_t *”转换为“const std::allocator<_Ty>”
1> with
1> [
1> _Ty=char
1> ]
1> 无构造函数可以接受源类型,或构造函数重载决策不明确
-------------------------------------------------------------------
//还有 我把CString所有的成员函数都看了一遍,没有一个的返回值是string的
//那如何才能实现CString到 string的转换啊?
//如果能把CString转成string的话 我就可以有很多处理可以做,
//因为学C++的时候都是用string的
回lijiakxl : 不行啊,我是这么写的
CString wo("xxxxcc");
string s;
s=(LPCTSTR)wo;
//报错
1>f:\c++试验\count_machine\count_machine\count_machinedlg.cpp(185) : error C2679: 二进制“=”: 没有找到接受“LPCTSTR”类型的右操作数的运算符(或没有可接受的转换)
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> &)”
回 lijiakxl:
CString strTemp = "123";
string str = (LPTSTR)(LPCTSTR)strTemp;
报错:
1>f:\vs 2005 主程序目录\vc\include\strstream(139) : error C2061: 语法错误 : 标识符“_DebugHeapTag_func”
error C2440: “初始化”: 无法从“LPTSTR”转换为“std::basic_string<_Elem,_Traits,_Ax>”
无构造函数可以接受源类型,或构造函数重载决策不明确
回vocanicy :
报错
error C2061: 语法错误 : 标识符“_DebugHeapTag_func”
error C2143: 语法错误 : 缺少“;”(在“:”的前面)
error C2143: 语法错误 : 缺少“;”(在“:”的前面) 展开
5个回答
展开全部
因为2005默认是UNICODE编码的,所以LPCTSTR实际上就是const wchar_t*,而string是MBCS编码的,所以转换就有问题
可以用MFC提供的一套X2X的宏来转换
string s;
USES_CONVERSION:
s = T2CA((LPCTSTR)wo);
T2CA就是将TCHAR字符串转为const char*
可以用MFC提供的一套X2X的宏来转换
string s;
USES_CONVERSION:
s = T2CA((LPCTSTR)wo);
T2CA就是将TCHAR字符串转为const char*
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(LPCTSTR)CString 将其转换成字符串 在就可以随便怎么做了
CString strTemp = "123";
string str = (LPTSTR)(LPCTSTR)strTemp;
CString strTemp = "123";
string str = (LPTSTR)(LPCTSTR)strTemp;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CString na;
na=_T(m_name);//解决编码问题
string line(na.GetBuffer(na.GetLength()));
na.ReleaseBuffer(-1);
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;
}
cstring m_str;
int a=str.Getlenth();
for(int i=0;i<a;i++)
{
m_str+=str;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询