直接用How to convert CString to std::string in Visual Studio 2005 There are many methods available. But the easiest one in VS 2005 is to use the function CStringA. See the following code snippet. CString CStr("This is a CString"); std::string Str = CStringA(CStr); CStringA is a template specialization of class CStringT. 最好了!
string str1;
CString str2; str1 = _T("good");
MessageBox(str1.c_str());
str2 = str1.c_str();
MessageBox(str2);
str2 = _T("happy");
str1 = str2;
MessageBox(str1.c_str());
CString 是 MFC 封装的字符串模板。
#define Tstring wstring
#else
#define Tstring string
#endif可以这样转换
CString str=CString(string.c_str())
string转CString直接像楼上的CString str=CString(string.c_str());就可以了
标准Win32程序最好使用string要么就用手动转换
There are many methods available. But the easiest one in VS 2005 is to use the function CStringA. See the following code snippet. CString CStr("This is a CString");
std::string Str = CStringA(CStr);
CStringA is a template specialization of class CStringT. 最好了!
CString m_str(_T("qwerg"));
char *chr=new char[m_str.GetLength()+1];
WideCharToMultiByte(CP_ACP,0,m_str.GetBuffer(),-1,chr,m_str.GetLength()+1,NULL,NULL);
string str=chr;
cout<<str;
方法二
CString str = _T("ooqoqoq");
setlocale(LC_ALL, "chs");
char *p = new char[str.GetLength()+1];
wcstombs(p,str,str.GetLength()+1);
string m_fileName = p;
cout<<m_fileName;我来要分啦
CString str2(str1.c_str()); CString str3 = _T("test");
string str4((LPCSTR)CStringA(str3));
string;
typedef basic_string<wchar_t, char_traits<wchar_t>,
allocator<wchar_t> > wstring;
我个人比较喜欢使用basic_string模板类,定义如下的字符串对象既支持ASCII版本,也支持UNICODE版本:std::basic_string<TCHAR> tString;
对于ASCII版本,TCHAR对应char,则tString对应string;
对于UNICODE版本,TCHAR对应wchar_t,则tString对应wstring;
另外就是basic_string模板类提供的接口比较多,使用起来比较灵活~
string str;
CString s(str.c_str());
---------CString ->string--------
unicode下:
Cstring str;
string s(CW2A((LPCTSTR)str));
1,const char*(C风格字符串)与string之间转换:
(1) const char*可以直接对string类型赋值,例如:
const char* pchar = "qwerasdf";
stringstr = pchar;
(2) string通过c_str()函数转换为C风格字符串,例如:
string str = "qwerasdf";
const char* pchar = str.c_str();
2,const char*类型可以直接给CString类型赋值,例如:
const char* pchar = "qwerasdf";
CString str = pchar;
3,string类型变量转为为Cstring类型变量
CString类型变量可以直接给string类型变量赋值,但是string类型不能对CString类型直接赋值。通过前两类
转换我们可以得到,string类型变量转换为const char*类型,然后再直接赋值就可以了。例如:
CString cstr;
sring str = “asdasd”;
cstr = str.c_str();
同理,CStrng类型变量先转换为string类型在调用c_str()函数就可以完成向const char*类型的转换。例如:
CString cStr = "adsad";
string str = cStr;
const char* pchar = str.c_str();
引用:http://blog.csdn.net/flywithmj/article/details/7305963