2010-03-04 2 views
1

와이드 문자열을 가지고 있고 그것을 바이너리 모드에서 열어 놓은 wofstream에 쓰려고합니다. 결과 파일을 보면 다른 모든 바이트가 누락됩니다.내 std :: wofstream이 ansi를 쓰는 이유는 무엇입니까?

Visual Studio에서 바이너리 편집기로 파일을 열었을 때 다른 모든 바이트가 0으로 표시 될 것으로 예상했지만, 0은 보이지 않습니다.

제가 누락 된 부분을 알고 계십니까?

감사합니다.

CAtlStringW data = L"some data"; 
wofstream stream("c:\hello.txt", ios_base:out|ios_base:binary); 
stream.write(data.GetBuffer(), data.GetLength()); 
stream.close(); 
+0

몇 가지 코드를 표시 할 수 있습니까 – Cthutu

+0

코드를 표시하십시오. – Andrey

+2

중복 된 http://stackoverflow.com/questions/1509277/why-does-wide-file-stream-in-c-narrow-written-data-by-default –

답변

0

는 출력 폭 스트림을 사용하여 파일에 쓸 때, 무엇을 실제로 일어나는 것은 그것이 다른 8 비트 인코딩 넓은 문자로 변환한다는 것입니다 :


코드는 다음과 같은 것입니다.

UTF-8 로켈을 사용하는 경우 와이드 문자열을 UTF-8 인코딩 된 텍스트로 변환하지만 (일반적으로 MSVC는 UTF-8 로케일을 제공하지 않음) 일반적으로 cp1251과 같은 일부 코드 페이지로 변환하려고 시도합니다 ASCII.

관련 문제