2013-04-18 1 views
1

fstream을 사용하여 이러한 기호를 파일로 인쇄 할 때 결과가 엉망입니다. 사용 :C++ fstream은 ρ 및 Δ와 같은 기호를 올바르게 파일에 인쇄하지 않습니다.

file << "Δ" << endl; 

이 리눅스에서 잘 작동하지만 내가 그것을 compilled 때 창문이 작동하지 않습니다.

Windows에서이 작업을 수행하는 구체적인 방법이 있습니까?

+0

을 나는 윈도우 콘솔은 유니 코드 문자를 –

+0

@TonyTheLion를 지원 생각하지 않는다 : 영업 이익은 파일에 쓰고있다. –

+2

사용 된 인코딩을 확인 했습니까? 리눅스에서는 아마도 UTF-8 일 것이지만 Windows에서는 BOM이 없으면 로컬 코드 페이지가 기본이 될 것입니다. – Caladan

답변

2

다음은 MSVC2010에서 작동합니다. UTF-8 바이트 스트림에 와이드 문자 은밀한 할 std::codecvt_utf8_utf16를 사용

#include <fstream> 
#include <codecvt> 
int main() 
{ 
    std::wofstream file("myfile", std::ios::out | std::ios::binary); 
    file.imbue(std::locale(file.getloc(), new std::codecvt_utf8_utf16<wchar_t>)); 

    file << L"Δ" << std::endl; 
} 
+0

MSVC2010을 가지고 있지 않습니다. 코드 :: 블록을 사용해야합니까? – lasvig

+0

@lasvig code :: blocks는 컴파일러가 아닌 IDE입니다. 어떤 컴파일러를 사용 하느냐에 따라 달라집니다 (여러분의 code :: blocks 다운로드로 압축 된 MinGW라고 생각합니다). –

+0

ops, 나는 mingw32-g ++을 의미합니다 – lasvig