C++:拥有 Unicode 控制台标题

C++: Having unicode console title..?

本文关键字:控制台 标题 Unicode 拥有 C++      更新时间:2023-10-16

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

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

有什么建议吗?

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

SetConsoleTitleW(L"DиD");

引号前的L表示这是一个wchar_t*字符串。

另外,为了完整起见,我不得不说,在 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.";

像往常一样,维基百科对此有更详细的说明。

看起来

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

您需要将字符串文字转换为 UTF-16(即 WCHAR* ) 在将其传递给函数之前,或将文本创建为WCHAR*文本(我相信这是使用语法L"DиD"完成的)。