C ++:拥有unicode控制台标题..?

时间:2012-04-14 11:09:32

标签: c++ unicode console title

当我尝试将控制台的标题设置为包含unicode字符的字符串时,使用SetConsoleTitle(),标题只显示一些乱码字符。
我也尝试过SetConsoleTitleW()函数,但这给了我以下错误:

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

有什么建议吗?

2 个答案:

答案 0 :(得分:7)

您必须使用宽字符串文字,即:

SetConsoleTitleW(L"DиD");

引号前的L表示这是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有更详细的说明。

答案 1 :(得分:1)

看起来您正在尝试将UTF-8编码的数据发送到需要UTF-16编码数据的函数。

您需要将字符串文字转换为UTF-16(即WCHAR*),然后再将其传递给函数,或者将文字创建为WCHAR*文字(我相信是使用语法L"DиD")。