解决方案 »

  1.   

    例:
    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());
      

  2.   

    std::string、std::wstring 是标准 C++ 封装;
    CString 是 MFC 封装的字符串模板。
      

  3.   

    #ifdef UNICODE
    #define Tstring wstring
    #else
    #define Tstring string
    #endif可以这样转换
    CString str=CString(string.c_str())
      

  4.   

    CString转string使用T2A()
    string转CString直接像楼上的CString str=CString(string.c_str());就可以了
      

  5.   

    MFC程序最好使用CString
    标准Win32程序最好使用string要么就用手动转换
      

  6.   

    先把 string使用.C_STR()利用转换成的字符串,然后强制转成CString就行了
      

  7.   

    直接用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. 最好了!
      

  8.   

    string与CString互转,通过char*中转
      

  9.   

    string与CString互转,通过char*中转
      

  10.   

    方法一:
    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;我来要分啦
      

  11.   

    string str1 = "test";
    CString str2(str1.c_str()); CString str3 = _T("test");
    string str4((LPCSTR)CStringA(str3));
      

  12.   

    看看string和wstring是怎么定义的:typedef basic_string<char, char_traits<char>, allocator<char> >
    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模板类提供的接口比较多,使用起来比较灵活~
      

  13.   

    ----------str ->CString ---------
    string  str;
    CString s(str.c_str());
    ---------CString ->string--------
    unicode下:
    Cstring str;
    string s(CW2A((LPCTSTR)str));
      

  14.   

    俺习惯直接使用TCHAR数组自己控制,或者使用CStringA和CStringW。
      

  15.   

    这种转换通用(无论是否是Unicode)
      

  16.   

    我们在写程序时,常常会遇到类型转换的问题。现总结一些常见的类型转换。
     
    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