나는 win32 응용 프로그램에서하고 있고 유니 코드 텍스트 입력을 허용하는 편집 컨트롤이 있습니다. 나는 std::string
에 텍스트를 얻기 위해 다음 코드를 사용WCHAR 배열을 유니 코드로 std :: string으로 가져 오는 중입니까?
WCHAR out[50] = {};
GetDlgItemTextW(hwnd, ID_Edit, out, 50);
wstring myWString(out);
string myString(ws.begin(), ws.end());
dubugger에서를, I는 입력이 유니 코드 텍스트이지만, myString
이 currupted 때 myWString
괜찮 볼 수 있습니다.
어떻게 올바르게 변환 할 수 있습니까?
는 편집 :
확인보다는 string
와 장난, 내가 대신 wstring
를 사용합니다. 그러나 또 다른 문제가 발생할 수 :
나는 밖으로 지금 consle에 wstring
, wcin
및 wcout
휴식 비 ASCII 문자 입력을 사용자 입력을 얻을하고 string
, cout
및 cin
를 사용하고 다른 코드를 넣어 한 부분 ...
그것은이었다
wstring myString;
//...
wcin >> myString;
//...
wcout << myString;
:
string myString;
//...
cin >> myString;
//...
cout << myString;
가로 변경
사용자가 비 ASCII 문자를 사용하면 입력 및 출력 텍스트가 손상됩니다.
가 왜 처음에 변환 할 수 있습니까? 국제화 된 비 ASCII 텍스트로 작업해야하는 경우에는'wstring'을 사용하십시오. –
WideCharToMultiByte API – Asesh
사용할 수 있습니다.이 질문은 원본 및 대상 인코딩을 모른 채 너무 광범위합니다. – MrEricSir