【发布时间】: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, "");(需要<clocale>)。 -
@KerrekSB 似乎
std::setlocale(0,"");(需要 2 个参数?其中一个不编译)在流未终止的情况下将其更改为“工作”状态,但■字符正在打印为|,那又如何? -
@Gizmo:抱歉,已修复。
标签: c++ cout unicode-string