2012-04-14 3 views
3

SetConsoleTitle()을 사용하여 콘솔 제목을 유니 코드 문자가있는 문자열로 설정하려고하면 제목에 약간의 가비지 문자가 대신 표시됩니다.
나는 또한 SetConsoleTitleW() 함수를 시도했다, 그러나 그것은 나에게 다음과 같은 오류 제공 :C++ : 유니 코드 콘솔 제목이 있습니까 ..?

error: cannot convert 'const char*' to 'const WCHAR*' for argument '1' to 'BOOL SetConsoleTitleW(const WCHAR*)' 

어떤 조언을?

답변

7

당신은 문자 그대로의 넓은 문자열을 사용해야, 즉 : 견적 의미 전에

L
SetConsoleTitleW(L"DиD"); 

은이는 wchar_t* 문자열입니다.

또한, completness 내가 있다는 점에서 C++ 11가 새 문자열 리터럴 접두사를 정의 말할 필요 : 그것에 대해 더 자세한 메모를 가지고

const char a[] = u8"for a UTF-8 string."; 
const char_16_t b[] = u"for a UTF-16 string."; 
const char_32_t c[] = U"for a UTF-32 string."; 

wikipedia 평소와 같이.

+0

고맙습니다. 아주 좋은 대답. (시간 제한이 없어지면 2 분 안에이 대답을 받아 들일 것입니다.) –

+1

여러분을 환영합니다! –

1

UTF-8 인코딩 데이터를 UTF-16 인코딩 데이터가 필요한 기능으로 보내려는 것처럼 보입니다.

당신은 (내가 구문 L"DиD"를 사용하여 수행됩니다 믿는) 리터럴 WCHAR*로 문자를 함수에 전달하기 전에 UTF-16 (즉 WCHAR*)에 리터럴 문자열을 변환하거나 만들 중 하나가 필요합니다.