【问题标题】:ASCII characters not printed in WCOUT and COUT未在 WCOUT 和 COUT 中打印的 ASCII 字符
【发布时间】:2013-10-12 13:44:07
【问题描述】:

我正在尝试在控制台中打印一些“特殊”字符(超过 127 个),但不知何故没有打印出来。

我有这个小代码sn-p:

#include <iostream>
int main()
{
    std::wcout << L"a■■■■■■■■■■■a■■■■■■■■■■■■■■a" << std::flush;
    return 0;
}

它打印了“a”,但随后……什么也没有。我使用 cout/string 还是 wcout/wstring 都没关系。 (使用 cout 我只看到“?”而在 wcout 中什么也没有,它结束了流)

此字符的 ascii 代码为 254。这里会发生什么?我认为这可以打印吗?

【问题讨论】:

  • 这里有相当多的代码似乎对这个问题没有帮助。这真的是否仅在您在其自己的线程中运行此代码时发生?所有的等待?不要停止细化测试用例,直到它真正编译和运行并显示问题的最小。
  • @PeteBecker 好的更新
  • 尝试在主函数的开头添加std::setlocale(LC_CTYPE, "");(需要&lt;clocale&gt;)。
  • @KerrekSB 似乎 std::setlocale(0,""); (需要 2 个参数?其中一个不编译)在流未终止的情况下将其更改为“工作”状态,但 字符正在打印为|,那又如何?
  • @Gizmo:抱歉,已修复。

标签: c++ cout unicode-string


【解决方案1】:

根据我在 cmets 中链接的答案,我认为这是您的解决方案:

#include <fcntl.h>
#include <io.h>

_setmode(_fileno(stdout), _O_U8TEXT);

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 2016-12-25
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2021-05-21
    • 2013-03-13
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多