2011-01-03 5 views
3

std :: string을 std :: wstring으로 변환하려고합니다. 내가 만난 두 가지 접근법이 있습니다. MultiByteToWideCharArray를 사용하여 std :: string을 std :: wstring으로 변환하는 이유는 무엇입니까?

  1. 다음 코드를 사용하여 우리가 넓은 문자열로 변환하지 못할 문자열 STR을 감안할 때 wstring의 WideString으로 = 표준 : : wstring의 (str.begin(), str.end());

  2. 다른 접근법은 MultiByteToWideCharArray()를 사용하는 것입니다. 내가 이해하고 싶었다 무엇

은 첫 번째 방법을 사용하는 단점이 무엇이고 어떻게합니까 두 번째 방법은 일이 문제를 해결

답변

4

MultiByteToWideChar는 ("코드 페이지"를 선택 할 수있는 기능처럼) 더 많은 옵션을 제공하며, 비표준 기호를 올바르게 변환합니다.

4

첫 번째 옵션은 멀티 바이트 인코딩을 지원하지 않습니다. 문자열의 각 바이트 (char)를 반복하여 와이드 문자로 변환합니다. 멀티 바이트 인코딩을 사용하는 문자열이있는 경우 개별 문자에 2 바이트 이상 걸릴 수 있으므로 표준 문자열 반복기는 적합하지 않습니다.

MultiByteToWideChar 기능은 codepage 매개 변수에 지정된대로 여러 가지 멀티 바이트 형식을 지원합니다.

관련 문제