【问题标题】:Special Characters on Console控制台上的特殊字符
【发布时间】:2010-04-12 17:07:13
【问题描述】:

我已经完成了我的扑克游戏,但现在我想通过显示黑桃、红心、方块和梅花让它看起来更好一些。我试过这个答案:C++: Printing ASCII Heart and Diamonds With Platform Independent

也许很愚蠢,但我会尝试:

cout << 'U+2662' << endl;

我不知道怎么写。

【问题讨论】:

  • 你怎么能不让它工作呢?你在哪里不能让它工作?实际上,您的问题是链接问题的副本,因为您没有向其中添加更多信息。
  • 请发布不工作/不工作的代码的相关部分。
  • 如果你们是真正的黑客,你就能立即诊断出“它不起作用”。
  • 您的 Windows 控制台可以处理 UTF-8 输出吗?
  • @WhirlWind:你应该看到我所说的组合黑客和心灵感应者。我必须,真的,考虑到 Psi 军团的削减。

标签: c++ console ascii special-characters


【解决方案1】:

要输出 UTF-8 字符,您需要将其编码为十六进制字节。我将从您链接的问题的答案中窃取 this link to fileinfo.com - 如果您跳转到 UTF-8 表示,它会显示 0xE2 0x99 0xA5,您可以将其转换为 "\xE2\x99\xA5" 作为字符串。

但是我不能保证你的控制台会显示 UTF-8,所以这个答案可能没有帮助。

【讨论】:

  • 感谢马克的回答。使用上面的字符串,它显示:♥?我想如果我能找到正确的,它就会正确显示。
  • 我想你已经证明了我已经怀疑的东西,控制台不使用 UTF-8。您是否尝试过链接问题中提供的代码?
【解决方案2】:

如果您只是想在 Windows 控制台中使用旧的 ASCII 控制字符,您可以使用:

cout << (char) 3 << (char) 4 << (char) 5 << (char) 6 << endl;
//hearts, diamonds, clubs, spades

这不是 Unicode,我认为它不是很便携。我真的不知道您问题的便携式解决方案。

【讨论】:

    【解决方案3】:

    您需要使用 std::wcout 并通过编码为十六进制字节来使用 UTF-16(正如 Mark 回答的那样),但我不能保证您的任何字符都能在 Windows(在 Vista 之前?)上正确显示,因为 Windows控制台从来没有真正用于这种事情。您可以将 wcout 与 Visual Studio 和 Cygwin 一起使用,但我认为 MinGW 不支持它。确保使用宽字符文字:L"string"

    或者,您可以使用预处理器为每个平台提供正确的常量定义。我想最多会有三个——旧平台上的 ASCII、更现代的 UTF-8 和新 Windows 上的 UTF-16(带有wcout)。

    【讨论】:

    • 应该有一个简单的方法,就像马克的例子。
    • 我的编译器没有运行此代码“wcout
    猜你喜欢
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多