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

时间:2016-04-25 13:58:25

标签: 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;

但那并没有输出任何东西。

所以我真的不知道还能做什么。

1 个答案:

答案 0 :(得分:1)

您的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;