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

标签 c++ unicode hex

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

相关文章:

Javascript 二进制字符串,转十六进制,转base58,转回十六进制,转回字符串,随机错误

C++ 类不是自身的基础

php - 仅允许(英语和阿拉伯语)使用 UTF-8 代码

c++ - 从函数返回类对象的不同行为

string - 将 unicode 字符转换为小写的标准算法是什么?

python - python中的双重解码unicode

python - 格式化要打印 2 位数字的十六进制?

c - 使用 0x 符号的数字是什么意思?

c++ - 从函数返回指向局部变量的静态指针

c++ - 寻找与另一个相反的 vector ?