【问题标题】:C++: Having unicode console title..?C++:有 unicode 控制台标题..?
【发布时间】:2012-04-14 11:09:32
【问题描述】:

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

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

有什么建议吗?

【问题讨论】:

    标签: c++ unicode console title


    【解决方案1】:

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

    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.";
    

    像往常一样wikipedia对此有更详细的说明。

    【讨论】:

    • 非常感谢。很好的答案。 (我会在 2 分钟内接受这个答案,当时间限制消失时。)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2012-03-19
      • 2010-09-27
      • 2017-11-16
      相关资源
      最近更新 更多