2016-11-07 4 views
1

작은 콘솔 프로그램을 작성하고 해당 문자를 표시하려고합니다. 인수로 전달 된 값을 기반으로 표시 할 문자를 반환하는 함수가 있지만 문자를 표시 할 수 없습니다. 내가 읽은 것에서 나는 총알에 대해 '\ u2022'를 반환하려고 시도했다. 그 값은 내가 온라인에서 볼 수있는 모든 것을 발견하고, 문자를 소스 코드에 붙여 넣으려고 시도하며, 코드 블럭킹의 인코딩 설정을 엉망으로 만들었다. 여전히 어디서나 얻지 못했습니다. 나는 그것 위에 'o를 얻었다. 그러나 그것은 내가 간 가장 가까운 것이다.C와 같은 @ 기호와 @ 기호 만 표시하려고합니다.

누군가가이 작업을 수행하는 방법이나 사용하고있는 번호 표현 및 위치를 설명해 주실 수 있습니까?

+2

시스템 환경 로캘에'std :: locale :: global'을 설정하고 표준 출력에 넓은 문자를 쓰거나이 유니 코드를 인코딩하려면'std :: cout' 대신'std :: wcout'을 사용해야합니다 캐릭터를 시스템 환경 로케일의 캐릭터 세트에 따라'std :: cout'에 출력합니다. 유니 코드는 어렵습니다. –

답변

2

Windows는 콘솔 입출력에 대한 유니 코드 지원이 제한되어 있습니다. Code :: Blocks 설정은 MingGW-32를 사용하는 것이 더 많은 문제가 있습니다. 당신은 직접 WriteConsoleW을 사용해야합니다 :

#include <iostream> 
#include "windows.h" 

//ελληνικά  
void myprint(const wchar_t* str) 
{ 
    HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); 
    WriteConsoleW(h, str, wcslen(str), NULL, NULL); 
} 

int main() 
{ 
    myprint(L"œ\n"); 
    return 0; 
} 

참고, 내가 그렇고 ("œ" 절약 지원하기 위해, *의 .cpp 파일에 UTF8 변환을 강제로 코드의 일부 그리스어 텍스트를 추가, 윈도우 API 실제로 UTF16 사용)

일부 아시아 언어에서는 여전히 작동하지 않습니다. 또한 자신 만의 << 연산자를 추가하여 C++ look과 일치하도록 할 수 있습니다.