http://www.vckbase.com/document/viewdoc/?id=1397

解决方案 »

  1.   

    CString <->wstring        CString <->string 
    直接支持吧CString::GetBuffer()
      

  2.   

    http://blog.csdn.net/xuweiqun/archive/2006/11/07/1370420.aspx
      

  3.   

    string 用 c_str() 转换成c风格字符串,这样 CString 绝对可以接受
      

  4.   

    string和CString的结构很像,都是维护char*的类,转来转去的都很安全,关键是里面基本都是走strcpy的。
      

  5.   

    能否举个例子!
    //unicode下转换            //非unicode下转换
    CString <->wstring        CString <->string
    CString <->wchar_t*          CString <->char* 
    说一下!
      

  6.   


    CString str;
    char Buf[255];// CString ------>WCHAR *
    WCHAR *pChar = str.GetBuffer(str.GetLength()); // WCHAR *------->char *
    WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)pChar, -1, Buf, sizeof(Buf), NULL, NULL); 
     
    str.ReleaseBuffer();
      

  7.   

    使用对应的构造函数不就得了
    CString str;
    wstring wstr = wstring(str.GetBuffer(str.GetLength()));
      

  8.   

    //Sting数据类型基本数据
    //CString 为一MFC类,
    可以通用.
      

  9.   

    void ConvertCString2string(CString& strSrc,std::string& strDes)
    {
    #ifndef UNICODE
    strDes = strSrc;

    #else
    USES_CONVERSION;

    strDes = W2A(strSrc.LockBuffer());
    strSrc.UnlockBuffer();
    #endif

    }
      

  10.   


    void ConvertCString2string(CString& strSrc,std::string& strDes) 

    #ifndef UNICODE 
    strDes = strSrc; #else 
    USES_CONVERSION; strDes = W2A(strSrc.LockBuffer()); 
    strSrc.UnlockBuffer(); 
    #endif }
      

  11.   

    CString str1;
    string str2;
    str2 = (LPCTSTR)str1
    这样不知道行不行
      

  12.   

    void ConvertCString2string(CString& strSrc,std::string& strDes) 

    #ifndef UNICODE 
    strDes = strSrc; //能这样直接的赋值么!
    #else 
    USES_CONVERSION; 
    strDes = W2A(strSrc.LockBuffer());  W2A什么函数呀!~
    strSrc.UnlockBuffer(); 
    #endif }
      

  13.   

    不管是不是Unicode下,string转CString,都直接用
    string stlstr="afd";
    CString msstr=stlstr.c_str();//给CString赋值可以随意使用Unicode或ANSI字符串,CString会自动转换CString转string:
    #include "atlconv.h"
    USES_CONVERSION; 
    CString msstr=_T("salfj");
    string stlstr=T2A((LPTSTR)(LPCTSTR)msstr);
    wstring stlstrw;
    #if UNICODE
    stlstrw=(LPTSTR)(LPCTSTR)msstr;
    #else
    stlstrw=A2W((LPTSTR)(LPCTSTR)msstr);
    #endifCString 转 TCHAR* 最简单的方法:(LPTSTR)(LPCTSTR)msstr;
    要不就用msstr.GetBuffer();然后msstr.ReleaseBuffer();建议:
    #if UNICODE
    typedef wstring tstring;
    #else
    typedef string tstring;
    #endif
    以后就都使用tstring了,那么不管是否为Unicode,都直接
    CString msstr=_T("salfj");
    tstring stlstr=(LPTSTR)(LPCTSTR)msstr;
      

  14.   

    int WideCharToMultiByte(
      UINT CodePage,         // code page
      DWORD dwFlags,         // performance and mapping flags
      LPCWSTR lpWideCharStr, // address of wide-character string
      int cchWideChar,       // number of characters in string
      LPSTR lpMultiByteStr,  // address of buffer for new string
      int cchMultiByte,      // size of buffer
      LPCSTR lpDefaultChar,  // address of default for unmappable 
                             // characters
      LPBOOL lpUsedDefaultChar   // address of flag set when default 
                                 // char. used
    );单字节、多字节之间的转换。
      

  15.   

    CString cs ("Hello");
      // Convert a TCHAR string to a LPCSTR
      CT2CA pszConvertedAnsiString (cs);
      // construct a std::string using the LPCSTR input
      std::string strStd (pszConvertedAnsiString)
      

  16.   

    str.GetBuffer(str.GetLength())
    是个思路
      

  17.   

    http://msdn.microsoft.com/en-us/library/ms235631(v=vs.80).aspx
      

  18.   

    CString -> char* ->string
      

  19.   

    无法从“const char *”转换为“ATL::CStringT<BaseType,StringTraits>”
      

  20.   

    CString strSrc("123");CStringA strSrcA(strSrc);
    CStringW strSrcW(strSrc);const char* p1 = strSrcA;
    const WCHAR* p2 = strSrcW;string strDesA((LPCSTR)strSrcA);
    wstring strDesW((LPCWSTR)strSrcW);
      

  21.   

    CString<->CStringA<->std::string
    CString<->CStringW<->std::wstring