由于項目原因,需要引入C++。
wstring 與 string 的互轉研究了一段時間,坑主要在于使用下面這種方式進行轉換,中文會亂碼
wstring ws = L"這是一段測試文字";
string s;
s.assign(ws.begin(), ws.end());
是以采用了下面的方法将wstring 轉為 string
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 為
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^ 的方法為
auto ps = ref new String(wstr.c_str());
String^ 轉為 wstring 的方法為
wstring wstr(ps->Data());
作者:newcj
出處:http://newcj.cnblogs.com/
歡迎轉載,但還請尊重勞動果實,保留此段聲明并注明原文連結。