는 키릴 문자의 ISO-10646 코드 포인트 값은이 0x430이다 소문자, 그래서 나는 다음과 같은 시도 :넓은 문자열을 인쇄하는 방법은 무엇입니까?
char u8str[] = u8"Cyrillic lowercase a is: \u0430.";
cout << u8str;
및
키릴 소문자 a가 성공적으로u8str
를 통해 인쇄
wchar_t wstr[] = L"Cyrillic lowercase a is: \u0430.";
wcout << wstr;
있지만 wstr
을 .
u8str
에 대해서는 해당 문자가 utf-8 인코딩 값으로 초기화되었음을 확인했습니다. 키릴 문자 소문자 a는 2 바이트를 차지하며 값은 D0 B0
입니다. 모두 괜찮아 보인다. 키릴 문자가 올바르게 인쇄되었습니다. wstr
로서는
wstr
배열의 각
wchar_t
가 실행 와이드 문자 세트의 문자의 부호화의 수치 값으로 초기화되는 것으로 가정한다.
execution wide-character set
이 무엇인지 완전히 이해하지는 못했지만 배열에 저장된 키릴 문자 소문자 a의 값은
0x430
입니다. 어쨌든, 키릴 문자는 올바르게 인쇄되지 않습니다. (다른 문자는 모두 OK입니다.)
나는이 질문이 너무 초보적인 경우 사과 wchar_t
거시기를위한 총 초보자입니다. 와일드 문자 문자열을 사용하여 키릴 문자를 인쇄하는 시도가 잘못 되었습니까? 실행중인 와이드 문자 집합 (이 문자 집합은 결국 무엇입니까?)에서 문자 표현의 문제입니까? 아니면 iostream 기능의 잘못된 사용에 관한 문제입니까? 가입일
실제로 두 사례를 따로 실행했습니다. 그들은 단지 편의를 위해 질문에 함께 넣어졌습니다. 죄송합니다. – goodbyeera
응용 프로그램에 유니 코드를 사용하도록 설정해야합니다. MSVC의 경우 _setmode (_fileno (stdout), _O_U16TEXT)를 사용할 수 있습니다. 당신의 메인이 시작될 때. 그러나 mingw의 경우 이것은 좀 더 어렵습니다. 여기를 참조하십시오 : http://sourceforge.net/apps/trac/mingw-w64/wiki/Unicode%20apps – Eejin
iostream 기능에 더 많은 문제가 있다는 것을 의미합니까? 그러나 그리스 문자의 실행 넓은 문자 집합 표현이 아닌가? – goodbyeera