如何在C++中从十六进制字符串输出 Unicode 字符

How to output Unicode characters from hex string in C++?

本文关键字:字符串 输出 Unicode 字符 十六进制 C++      更新时间:2023-10-16

我有一个名为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;