我正在尝试使用unicode字符在终端中做一些简单的盒子绘图。但是我注意到wcout不会为框图字符输出任何内容,甚至不会为占位符输出。所以我决定编写下面的程序,找出支持哪些unicode字符,发现wcout拒绝输出255以上的任何内容。我有什么办法让wcout正常工作吗?为什么无法访问任何扩展的unicode字符?
#include <wchar.h>
#include <locale>
#include <iostream>
using namespace std;
int main()
{
for (wchar_t c = 0; c < 0xFFFF; c++)
{
cout << "Iteration " << (int)c << endl;
wcout << c << endl << endl;
}
return 0;
}
答案 0 :(得分:5)
我不建议使用 wcout
,因为它不可移植、效率低下(总是执行转码)并且不支持所有 Unicode(例如代理对)。
相反,您可以使用 the open-source {fmt} library 可移植地打印包括 box drawing characters 的 Unicode 文本,例如:
#include <fmt/core.h>
int main() {
fmt::print("┌────────────────────┐\n"
"│ Hello, world! │\n"
"└────────────────────┘\n");
}
打印(https://godbolt.org/z/4EP6Yo):
┌────────────────────┐
│ Hello, world! │
└────────────────────┘
免责声明:我是 {fmt} 的作者。