2014-03-05 3 views
2

저는 C++을 처음 사용합니다.wchar_t *를 문자열로 변환하려면 어떻게해야합니까?

그리고 wchar_t *를 문자열로 변환하려고합니다.

조건에 wstring을 사용할 수 없습니다.

나는 아래의 코드를 가지고 :

wchar_t *wide = L"中文"; 
wstring ret  = wstring(wide); 
string str2(ret.begin(), ret.end()); 

을하지만 STR2은 이상한 문자를 반환합니다.

어디에서 수정해야합니까?

+0

http://stackoverflow.com/questions/402283/stdwstring-vs-stdstring –

+0

왜냐하면'str2'는'char'을 저장하는'string' 유형이기 때문입니다; 'wchar_t' 데이터를'char'에 강요하면 데이터가 손실 될 것입니다. – legends2k

+1

왜 조건에서 wstring을 사용할 수 없습니까? –

답변

3

당신은 거꾸로하려고합니다. 와이드 문자를 char (매우 손실이 많음)으로 자르는 대신 넓은 문자로 char을 확장하십시오.

즉, std::stringstd::wstring으로 변환하고 두 개의 std::wstring을 연결하십시오.

+0

당신이 대답 주셔서 감사합니다. –

1

어떤 플랫폼을 타겟팅하는지 잘 모르겠습니다. Windows 플랫폼에서 WideCharToMultiByte API 함수를 호출 할 수 있습니다. 설명서는 MSDN을 참조하십시오.

Linux를 사용 중이라면 libiconv 기능을 사용할 수 있다고 생각합니다. Google을 사용해보십시오.

물론 Windows 용 libiconv 포트가 있습니다.

일반적으로 이것은 문자 인코딩에 대해 모르는 경우 새로운 초보자에게 매우 복잡한 주제입니다. 배울 점이 많은 배경 지식이 있습니다.

관련 문제