- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
根据cppreference.com's doc on wchar_t
:
wchar_t
- type for wide character representation (see wide strings). Required to be large enough to represent any supported character code point (32 bits on systems that support Unicode. A notable exception is Windows, where wchar_t is 16 bits and holds UTF-16 code units) It has the same size, signedness, and alignment as one of the integer types, but is a distinct type.
标准在 [basic.fundamental]/5
中说:
Type
wchar_t
is a distinct type whose values can represent distinct codes for all members of the largest extended character set specified among the supported locales. Typewchar_t
shall have the same size, signedness, and alignment requirements as one of the other integral types, called its underlying type. Typeschar16_t
andchar32_t
denote distinct types with the same size, signedness, and alignment asuint_least16_t
anduint_least32_t
, respectively, in<cstdint>
, called the underlying types.
所以,如果我想处理 unicode 字符,我应该使用 wchar_t
?
同样,我如何知道特定的 unicode 字符是否“支持” wchar_t
?
最佳答案
So, if I want to deal with unicode characters, should I use
wchar_t
?
首先,请注意,编码并不强制您使用任何特定类型来表示某个字符。您可以使用 char
来表示 Unicode 字符,就像 wchar_t
一样 - 您只需要记住最多 4 个 char
一起将形成一个有效的代码点取决于 UTF-8、UTF-16 或 UTF-32 编码,而 wchar_t
可以使用 1 个(Linux 上的 UTF-32 等)或最多 2 个一起工作(UTF-16 window )。
接下来,没有明确的 Unicode 编码。一些 Unicode 编码使用固定宽度来表示代码点(如 UTF-32),其他(如 UTF-8 和 UTF-16)具有可变长度(例如字母 'a' 肯定只会用完 1 个字节,但分开从英文字母表来看,其他字符肯定会占用更多的字节来表示)。
因此,您必须确定要表示的字符类型,然后相应地选择编码。根据您要表示的字符类型,这将影响您的数据将占用的字节数。例如。使用 UTF-32 来表示主要是英文字符会导致很多 0 字节。 UTF-8 是许多基于拉丁语的语言的更好选择,而 UTF-16 通常是东亚语言的更好选择。
一旦您做出了决定,您应该尽量减少转化次数并与您的决定保持一致。
在下一步中,您可以决定适合表示数据的数据类型(或您可能需要的转换类型)。
如果你想在代码点的基础上进行文本操作/解释,char
如果你有例如日文汉字。但是,如果您只是想传达您的数据并且不再将其视为定量的字节序列,您可以使用 char
。
UTF-8 everywhere 的链接已经作为评论发布,我建议你也看看那里。另一个不错的读物是What every programmer should know about encodings .
到目前为止,C++ 中只有基本的 Unicode 语言支持(如 char16_t
和 char32_t
数据类型,以及 u8
/u
/U
文字前缀)。所以选择一个库来管理编码(尤其是转换)当然是一个好建议。
关于c++ - wchar_t 究竟能代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50413471/
我正在尝试在我的 UITableView 上调用 reloadData。我在没有界面生成器的情况下制作我的应用程序。 此代码适用于 Interface Builder,但似乎没有。 当我将我的代码与我
有人可以解释 UIAlertView 的委托(delegate)是如何工作的吗?它是自动调用还是我必须调用它?例如: - (void)alertView:(UIAlertView *)alertVie
编辑:好吧,根据其他人的建议,我创建了一个最小的示例......并且它有效,因此我将在未来与任何人分享它。这是工作代码: #include #include using namespace std
unicode 是 ,它被用在 XML 文档中。 最佳答案 查看图表:unicodelookup.com 换行符。 关于html - unicode字符是什么 代表?,我们在Stack Overflo
我有一个应用程序,可以以编程方式在配置的 Facebook 页面上发帖。我的应用程序显然已批准管理页面和发布页面权限,并且我正在使用页面访问 token 从现在开始一切正常,但最近当我在页面提要上发布
代表 NCAA 男子篮球分组的最佳数据库模式是什么?如果您不熟悉,请点击以下链接:http://www.cbssports.com/collegebasketball/mayhem/brackets/
所以我一直在阅读这个关于如何使用 Frida 的教程:https://www.frida.re/docs/functions/我遇到过以下情况: $ ./client 127.0.0.1 connec
委托(delegate)函数返回之前是否需要调用replyHandler?我需要进行几次 Web 服务 API 调用才能回复,以下实现正确吗? func session(_ session: WCSe
下面提到的是我的 textField 委托(delegate)方法,我正在使用 IQKeyBoardSwift 作为智能键盘。我尝试移除我的键盘,但我仍然没有收到任何关于接受“开始触摸”的方法的调用
我有一个表格 View ,其中几乎没有用于数据输入的文本字段和弹出窗口。我想将其中一些表示为强制性的。我不知道如何讨厌星号。任何帮助将不胜感激。 最佳答案 我认为你可以使用自定义 UITableVie
例如,我知道如何使用 numpy 对数组进行切片 v[1, :, :] 现在我想要一个函数将切片 (1,1,None) 作为输入并返回 v[1,:,:] 问题是我不知道如何表示省略号 最佳答案 您可以
修订... 应用程序的关键是与数据库服务器通信。服务器对应用程序的响应都是 XML 格式的。有几个屏幕。例如,屏幕 1 列出了用户的信息,屏幕 2 列出了用户过去的交易,允许新交易,等等。 这是我的
我想知道映射/表示内存的最佳方式是什么。我的意思是,例如,如何描述一个结构及其所有字段都被序列化。 我正在创建一个 RPC 库,它将使用 dwarf 调试数据创建客户端和服务器,因此我需要创建一个函数
如果我有一个实现了两个协议(protocol)的 View Controller : @interface CustomerOperationsViewController : UIViewContr
在 Objective-C 中我可以做这样的事情: @property (nonatomic, weak) id someObject; 如何在swift中做到这一点?我试过这个: let someO
我成功地使用了相当棒的 connection:didReceiveAuthenticationChallenge: NSURLConnectionDelegate 委托(delegate)方法。很酷。
我正在寻找原始数据类型的 @NonNull 等效 Java 注释。我知道原始数据不能为 null,但我找不到替代方法。 我想要实现的在逻辑上等同于: int mPageNumber; public v
我正在学习 Git,如果我能描述代表 Git 存储库的数学结构,那就太好了。例如:它是一个有向无环图;它的节点代表提交;它的节点有代表分支等的标签(每个节点最多一个标签,没有标签使用两次)。(我知道这
我看过很多与委托(delegate)相关的帖子,我想知道引用它们的正确方法。假设我有一个声明如下的对象: @interface MyViewController : UITableViewContro
我有这个类: public class Order { int OrderId {get; set;} string CustomerName {get; set;} } 我也声明下面的变
我是一名优秀的程序员,十分优秀!