WRT 下 C++ wstring, string, String^ 互轉

因爲項目緣由,須要引入C++。ide

wstring 與 string 的互轉研究了一段時間,坑主要在於使用下面這種方式進行轉換,中文會亂碼測試

wstring ws = L"這是一段測試文字";
string s;
s.assign(ws.begin(), ws.end());

所以採用了下面的方法將wstring 轉爲 stringspa

            wstring wstr = L"這是一段測試文字";
            string str;
            int wstr_len = wstr.length();
            int str_len = wstr_len * sizeof(wchar_t);
            str.resize(str_len);
            int new_len = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)wstr.c_str(),wstr_len,(LPSTR)str.c_str(),str_len,NULL,NULL);
            str.resize(new_len);

相似的 string轉爲wstring 爲code

            int str_len = s.length();//這裏的s是上述辦法轉下來的string
            wstring wstr;
            wstr.resize(str_len);

            int new_len = MultiByteToWideChar(CP_ACP,0,(LPSTR)s.c_str(),str_len,(LPWSTR)wstr.c_str(),str_len);
            wstr.resize(new_len);

wstring 轉爲 String^ 的方法爲blog

auto ps = ref new String(wstr.c_str());

String^ 轉爲 wstring 的方法爲string

wstring wstr(ps->Data());
相關文章
相關標籤/搜索