【发布时间】:2023-03-17 12:08:02
【问题描述】:
我有一个名为 str 的字符串,其中包含十六进制代码 265A,我想将其输出为 Unicode 字符,它应该是黑棋王。
所以这些是我已经尝试过的方法:
std::string str = "\u" + str;
std::cout << str;
但这给了我错误
error: incomplete universal character name \u
在做
std::cout << "\u" << str;
也没有工作,出于同样的原因。
所以我尝试像这样使用wchar_t:
wchar_t wc = strtol(str.c_str(), NULL, 16);
std::wcout << wc;
但这只是没有输出任何东西。
所以我真的不知道还能做什么。
【问题讨论】:
-
你想要哪种编码?
-
前两个不起作用,因为
\u是编译时操作,而不是运行时操作。您需要提供有关第三种情况发生的情况的更多信息。wc的值是多少?有没有可能您的wcout根本不支持该字符? -
呵呵,我没想到。我现在尝试使用 UTF8 进行编码,而在 Windows 中,我只是在执行
std::cout << "\u265A"时得到奇怪的字符,即♚。我得读一点。但是一些适用于 Windows 的编码。 @比芬 -
嗯,问题是,除了
std::wcout,我不知道有什么其他方法可以检查wc的值,但是strtol的文档建议它应该做什么它应该这样做。另外,您的意思是,无法输出? 265A 相当高,所以这可能是一种可能性,但我该如何绕过它呢? @RaymondChen -
@kim366 你在说什么?那时你甚至不知道调试器是什么..