我有一个名为 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;
但这并没有输出任何东西。
所以我真的不知道还能做什么。
最佳答案
您的strtol
方法差不多是正确的。以下测试程序测试您是否可以通过这种方式创建 A
:
#include <string>
#include <cstdlib>
#include <iostream>
int main()
{
const std::string str = "41";
wchar_t wc = std::strtol(str.c_str(), NULL, 16);
std::wcout << wc << std::endl;
}
你可能在输出方面有问题,或者你的系统的 wchar_t
是一些非 Unicode 类型 - 你可以用类似的东西来证明这一点
std::wcout << wchar_t(65) << wchar_t(0x265A) << std::endl;
关于c++ - 如何在 C++ 中从十六进制字符串输出 Unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842748/