如何使用 ICU 将 Unicode 代码点转换为 C++ 中的字符?

2023-11-24

不知怎的,我在谷歌上找不到答案。我在搜索时可能使用了错误的术语。我正在尝试执行一个简单的任务,将表示字符的数字转换为字符本身,如下表所示:http://unicode-table.com/en/#0460

例如,如果我的号码是 47(即“\”),我可以将 47 放入char并使用打印它cout我会在控制台中看到一个反斜杠(低于 256 的数字没有问题)。

但如果我的号码是 1120,则该字符应该是“Ѡ”(拉丁语中的 omega)。我假设它由几个字符表示(其中cout当它打印到屏幕上时会知道转换为“Ѡ”)。

如何获得代表“Ѡ”的“几个字符”?

我有一个名为 ICU 的库,我使用的是 UTF-8。


你叫什么统一码号码通常称为代码点。如果您想使用 C++ 和 Unicode 字符串,ICU 提供了icu::UnicodeString班级。你可以在这里找到文档.

创建一个Unicode字符串持有单个字符,您可以使用构造函数,它接受一个代码点UChar32:

icu::UnicodeString::UnicodeString(UChar32 ch)

然后你可以调用转UTF8字符串方法将字符串转换为 UTF-8。

示例程序:

#include <iostream>
#include <string>

#include <unicode/unistr.h>

int main() {
    icu::UnicodeString uni_str((UChar32)1120);
    std::string str;
    uni_str.toUTF8String(str);
    std::cout << str << std::endl;

    return 0;
}

在像 Debian 这样的 Linux 系统上,您可以使用以下命令编译该程序:

g++ so.cc -o so -licuuc

如果您的终端支持 UTF-8,这将打印一个 omega 字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ICU 将 Unicode 代码点转换为 C++ 中的字符? 的相关文章

  • 一次用 \r\n & \n & \r 分解字符串? [复制]

    这个问题在这里已经有答案了 我想按行分割字符串 但我希望它基于所有主要使用的换行符 n r n r 并返回一个包含每一行的数组 您可以使用正则表达式和preg split http php net preg split反而 lines pr
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我

随机推荐

  • 如何让我的通用比较器 (IComparer) 处理空值?

    我正在尝试编写一个用于排序的通用对象比较器 但我注意到它不能处理它所比较的 值之一为空的实例 当一个对象为空时 我希望它像空字符串一样对待它 我尝试将 null 值设置为 String Empty 但在调用 CompareTo 时出现 对象
  • 如何调试已签名发布的 APK?

    我有一个已发布的 APK 已签名 上传到 Google Play 并安装在我的 Android 设备上 我想在我的 Android 设备上运行此 APK 时对其进行调试 通过 Android Studio 或 Eclipse 我以前做过这个
  • 为什么当我将鼠标悬停在 VS Code 上时,它会出现类似芯片/扭曲的显示?

    这是我尝试使用 VS Code 时得到的视图 我已经重新安装并重新启动了系统 但没有任何进展 每当我打开 VS Code 并想要启动一个项目时 当我悬停鼠标时 情况会变得越来越糟 我最初以为我的一般显示有问题 它不会影响其他应用程序 只是
  • 我应该在构造函数中使用 getter 和 setter 吗? [复制]

    这个问题在这里已经有答案了 初始化类时 在构造函数中使用 getter 和 setter 函数是一个好习惯吗 或者直接设置变量是一个好习惯 因为构造函数可以被认为是一种变异器 您不应该从构造函数中调用 getter 和 setter 构造函
  • 带有宏的类型安全通用容器

    我正在尝试使用宏在 C 中创建类型安全的通用链表 它的工作方式应该与 C 中模板的工作方式类似 例如 LIST int list LIST CREATE int 我的第一次尝试是为了 define LIST TYPE 我上面使用的宏 定义一
  • 从“react”导入 React 会导致未捕获的语法错误:意外的标识符

    我已经安装了 webpack 3 以及 babel 和我的条目index js bundle js将构建并运行 我已经使用 ES7 8 功能对其进行了测试 但是导入不起作用并导致Uncaught SyntaxError Unexpected
  • “= =”是什么意思? [复制]

    这个问题在这里已经有答案了 我注意到有人使用 PHP 运算符 我无法理解 我用一个函数尝试过 它以疯狂的方式对应 这个运算符的定义是什么 我什至在 PHP 运算符的声明中找不到它 a b Identical TRUE if a等于 b 并且
  • Android:无法销毁活动

    我使用以下代码来删除每个视图组上的子项 protected void onDestroy super onDestroy this liberarMemoria public void liberarMemoria imagenes rec
  • 如何获取应用程序的Windows任务栏按钮以显示进度条的进度

    Windows 7 或者是 Vista 中引入的功能之一是应用程序的任务栏按钮能够显示该应用程序中进度条的进度 当我创建表单并在其上放置进度条时 它不会显示在任务栏按钮中 因此我认为这不会自动完成 如何让 Windows 7 在应用程序的任
  • CUDA 零复制内存注意事项

    我试图弄清楚使用 cudaHostAlloc 或 cudaMallocHost 是否合适 我正在尝试运行一个内核 其中我的输入数据超过 GPU 上的可用数据量 我的 cudaMallocHost 空间可以大于 GPU 上的空间吗 如果没有
  • 获取数组中具有某些属性的项目数

    我有一系列对象 如下所示 scope students isSelected true isSelected true isSelected false isSelected true isSelected true 我怎样才能得到有的计数
  • JavaScript 中的圆碰撞

    对于学校 我需要用 JavaScript 编写一个程序来判断圆圈是否发生碰撞 它不需要以图形方式显示 我尝试了一下 但我的代码似乎不起作用 我该如何修复它 这是我生成的代码 function collision p1x p1y r1 p2x
  • 根据第一个下拉选择jquery显示第二个下拉选项

    我试图根据第一个下拉列表选择获得第二个下拉列表 我在这里找到了一个很棒的脚本 http jsfiddle net heera Gyaue enter code here 从这篇文章 Jquery 根据第一个下拉列表显示 排序第二个下拉列表
  • random.sample() 每次都返回相同的随机序列?

    我使用 python 的 random sample population k 函数从列表中生成一组随机值 以创建该列表的新排列 问题是每次它运行一个循环时 它都会生成完全一样随机序列 为什么是这样 我什至使用 random seed i
  • For 循环宏在预处理器阶段展开?

    我想使用 gcc 预处理器编写几乎相同的代码声明 500 次 假设出于演示目的 我想使用宏FOR MACRO define FOR MACRO x for i in 1 x const int arr len x i i 并打电话FOR M
  • 如何停止 WebRole/WorkerRole 的单个实例/VM

    我们有一个虚拟机 说 SampleVM 已部署并在 Azure 环境上运行 同时我们创建了 2 个实例 一个是 WebRole 另一个是运行在 Slot staging 上的 WorkerRole 我的问题是我可以通过 powershell
  • asp.net core 中的 csp 报告端点

    我正在尝试在 asp net core web 应用程序中设置 CSP 并且 CSP 部分工作正常 我可以在浏览器控制台中看到违规行为 因为它们被发送到 report uri 端点 但是 我似乎无法在控制器中创建正确的方法来接收这些消息 我
  • 在 C 中生成随机布尔值的简单方法是什么? [复制]

    这个问题在这里已经有答案了 我想生成一个随机布尔值以在游戏中使用 因此它不需要加密安全 我会用stdbool h在我的代码中 我也做了 include
  • TensorFlow:使用 tf.merge_all_summaries() 时出现 PlaceHolder 错误

    我收到占位符错误 我不知道这意味着什么 因为我正确映射sess run y y X X 我在这里提供了一个功能齐全的 MWE 来重现错误 import tensorflow as tf import numpy as np def init
  • 如何使用 ICU 将 Unicode 代码点转换为 C++ 中的字符?

    不知怎的 我在谷歌上找不到答案 我在搜索时可能使用了错误的术语 我正在尝试执行一个简单的任务 将表示字符的数字转换为字符本身 如下表所示 http unicode table com en 0460 例如 如果我的号码是 47 即 我可以将