私はwin32アプリケーションでやっていて、ユニコードのテキスト入力を受け付けるエディットコントロールを持っています。私はstd::string
にテキストを取得するには、次のコードを使用します。WCHAR配列をunicodeのstd :: stringに変換するには?
WCHAR out[50] = {};
GetDlgItemTextW(hwnd, ID_Edit, out, 50);
wstring myWString(out);
string myString(ws.begin(), ws.end());
dubuggerでは、私は、入力がUnicodeテキストですが、myString
がcurruptedされたときmyWString
は大丈夫であることがわかります。
どうすれば正しく変換できますか?
はEDIT:
OK、というしstring
とだまし、私の代わりにwstring
を使用しています。 しかし、別の問題が生じる:
私は今wstring
、wcin
とwcout
休憩、consleにユーザー入力を取得するには、非ASCIIテキスト入力をstring
、cout
とcin
を使用していた別のコードを持っており、うち一部を入れて...
それはだった:
に変更string myString;
//...
cin >> myString;
//...
cout << myString;
:
wstring myString;
//...
wcin >> myString;
//...
wcout << myString;
ユーザーが非ASCII文字を使用すると、入力テキストと出力テキストが壊れます。
はなぜあなたが最初の場所で変換したいのですか?国際化されたASCII以外のテキストで作業する必要がある場合は、 'wstring'を使用してください。 –
WideCharToMultiByte API – Asesh
を使用することができます。この質問は、送信元と宛先のエンコーディングを知らなくても広すぎます。 – MrEricSir