You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何无需依赖ICU库将Unicode码点转换为对应字符串

实现方法

\u属于编译期的转义语法,仅支持代码里直接写常量的场景,运行时拼接字符串的操作编译器不会识别,不需要在这个写法上纠结。
你不需要额外安装ICU库,用C++11及以上的标准库就能实现需求,操作步骤如下:

  • 第一步:把拿到的十六进制码点字符串(比如"2460")转换成整数类型的码点值
  • 第二步:把整数类型的Unicode码点转成UTF-8编码的字符串直接输出即可

可直接运行的示例代码

#include <iostream>
#include <string>
#include <locale>
#include <codecvt>

int main() {
    // 你的输入:十六进制的Unicode码点字符串
    std::string tmp = "2460";
    // 第一步:把十六进制字符串转成无符号整数,第三个参数16代表按十六进制解析
    unsigned int code_point = std::stoul(tmp, nullptr, 16);
    
    // 第二步:把码点转成UTF-8字符串
    std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> converter;
    std::string result = converter.to_bytes(static_cast<char32_t>(code_point));
    
    // 输出结果,就是你要的①
    std::cout << result << std::endl;
    return 0;
}

注意事项

  • 现在主流的GCC、Clang、Visual Studio都默认支持C++11及以上标准,编译时不需要加额外参数
  • 如果Windows控制台输出乱码,可以先执行chcp 65001切换到UTF-8代码页再运行程序,Linux、macOS默认都是UTF-8编码不会出现乱码问题

内容的提问来源于stack exchange,提问作者Volensia Volenski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:18:00