如题

解决方案 »

  1.   

    如果是.NET,倒是可以用CStringA和CStringW,VC6的话就困难了:CString是根据TCHAR定义的。。你可以改用std::string和std::wstring
      

  2.   

    至于ASCII转UNICODE,得取出char指针来用MultibyteToWideChar。或者你可以自己做包一个类,封装一下。
      

  3.   

    pomelowu(羽战士)  
    我是VC6,“你可以改用std::string和std::wstring”能举个例吗?
      

  4.   

    std::string和std::wstring派生自STL的basic_string模板,功能和CString类似。不过要做std::string和std::wstring之间的转换,还是得取出char指针之后MultibyteToWideChar。如果对字符串处理没有特别的要求的话,干脆就用CHAR*和WCHAR*好了。
      

  5.   

    void CStringTowstring(wstring &wstr,CString cstr)
    { string str = cstr;
    int len = str.size();
    wchar_t *pwstr = new wchar_t[len + 1];  // allocate memory for pwstr
    for(int i = 0; i<=len; i++) pwstr[i] = 0;   // fill pwstr with 0
    //    mbstowcs(pwstr, str.c_str(), len);
        MultiByteToWideChar(936, 0, str.c_str(), -1, pwstr, len + 1);
        wstr = pwstr;
    delete[] pwstr;
    }
      

  6.   

    wstring 要报错,需要做预处理或加什么头文件么?
      

  7.   

    用string和wstring需要
    #include <string>string::c_str()获得char*
    wstring::c_str()获得wchar_t*
      

  8.   

    #include <string>
    还是报很多错!
      

  9.   

    #include <string>
    using namespace std;void CStringTowstring(wstring &wstr,CString cstr)
    { string str = cstr;
    int len = str.size();
    wchar_t *pwstr = new wchar_t[len + 1];  // allocate memory for pwstr
    for(int i = 0; i<=len; i++) pwstr[i] = 0;   // fill pwstr with 0
    //    mbstowcs(pwstr, str.c_str(), len);
        MultiByteToWideChar(936, 0, str.c_str(), -1, pwstr, len + 1);
        wstr = pwstr;
    delete[] pwstr;
    }