2011-09-07 2 views

답변

5

예, <cstdlib>에는 mbstowcs()wcstombs()이 있습니다.

나는 이것을 사용하는 방법에 대해 이전에 some code이라고 게시했습니다. 아마도 도움이 될 것입니다. 함수를 두 번 실행했는지 확인하십시오. 길이를 얻으려면 한 번, 실제 변환을 수행하려면 한 번 수행하십시오. (여기에 함수가 의미하는 것의 약간 discussion이 있습니다.) 수동 문자 배열 대신에 std::vector<char> 또는 std::vector<wchar_t>을 선호합니다.

wchar_t은 유니 코드와 아무 관련이 없습니다. 유니 코드가 필요한 경우 별도의 라이브러리 (예 : iconv())를 사용하여 wchar_t에서 유니 코드로 변환해야하며 유니 코드 코드 포인트의 데이터 형식으로 wchar_t을 사용하지 않아야합니다. 대신 기존 시스템에서는 uint32_t을 사용하고 최신 시스템에서는 char32_t을 사용하십시오.

+0

감사를

const char* c = "hey yo"; wstring s(c, c + 6); wcout << s << endl; wcin.get(); 

인쇄, 그러나이를 함수는 문자열 변환 용입니다. –

+0

단일 문자에 해당하는'mbtowc()'와'wctomb()가 있습니다. –

+0

@Amir 당신은 한 문자 길이의 문자열을 한 문자 길이의 다른 문자열로 변환하고 문자를 추출하기 위해 그것들을 사용할 수 있습니다. –

0

실제로 16 비트 문자뿐만 아니라 유니 코드를 사용하는 경우 ICUiconv과 같은 라이브러리를 살펴보십시오. 유니 코드는 wchar_t가하는 것처럼 16 비트 문자도 아닌 단일 문자를 다루는 것이 아닙니다.

1

은 분명히이 항상 작동하는지 모르겠어요, 작동 또는 그것은 우연의 일치,하지만 난 그것을 보여주는 가치라고 생각하는 경우 :

hey yo