-1
我正在做一個win32應用程序,並有一個接受unicode文本輸入的編輯控件。我用下面的代碼來獲取文本到std::string
:在unicode中獲取WCHAR數組到std :: string?
WCHAR out[50] = {};
GetDlgItemTextW(hwnd, ID_Edit, out, 50);
wstring myWString(out);
string myString(ws.begin(), ws.end());
在dubugger,我可以看到myWString
是罰款時,輸入Unicode文本,但myString
是currupted。
如何正確轉換它?
編輯:
確定,而不是用string
嘴硬,我用wstring
代替。 但另一個問題出現:
我有一個使用string
,cout
和cin
獲取用戶輸入CONSLE,現在wstring
,wcin
和wcout
斷非ASCII文本輸入了另一個代碼把一部分...
對於我的代碼是:
string myString;
//...
cin >> myString;
//...
cout << myString;
更改爲:
wstring myString;
//...
wcin >> myString;
//...
wcout << myString;
如果用戶使用非ASCII字符,則輸入和輸出文本已損壞。
爲什麼你要在第一時間轉換?如果您需要使用國際化的非ASCII文本,請使用'wstring'。 –
您可以使用WideCharToMultiByte API – Asesh
如果不知道源和目標編碼,此問題太寬泛。 – MrEricSir