gpt4 book ai didi

c++ - `char16_t` 和 `char32_t` 是用词不当吗?

转载 作者:可可西里 更新时间:2023-11-01 15:07:56 28 4
gpt4 key购买 nike

注意:我敢肯定有人会说这是主观的,但我认为它是相当有形的。

C++11 给了我们新的 basic_string类型 std::u16stringstd::u32string , 为 std::basic_string<char16_t> 输入别名和 std::basic_string<char32_t> , 分别。

子串的使用"u16""u32"在这种情况下对我来说更像是暗示“UTF-16”和“UTF-32”,这很愚蠢,因为 C++ 当然没有文本编码的概念。

名称实际上反射(reflect)了字符类型char16_tchar32_t ,但这些似乎命名不当。它们无符号的,因为它们的基础类型是无符号的:

[C++11: 3.9.1/5]: [..] Types char16_t and char32_t denote distinct types with the same size, signedness, and alignment as uint_least16_t and uint_least32_t, respectively [..]

但在我看来,这些名称违反了此类无符号类型的名称以 'u' 开头的约定。 ,并且使用像 16 这样的数字不符合 least 等条款指示固定宽度的类型。

那么我的问题是:我是在想象,还是这些名称存在根本性缺陷?

最佳答案

您引用的命名约定(uint32_tint_fast32_t 等)实际上仅用于typedef,而不用于原始类型类型。原始整数类型是 {signed, unsigned} {char, short, int, long, long long},{相对于 float 或 decimal 类型} ...

但是,除了那些整数类型之外,还有四种不同、独特的基本类型,charwchar_t char16_tchar32_t,分别是 ''L''u'' 的类型U'' 用于字母数字类型的数据,类似地用于这些数据的数组。这些类型当然也是整数类型,因此它们在一些算术整数类型上具有相同的布局,但是语言对前者、算术类型(你会用于计算)和后者的“字符”类型构成了某种类型的 I/O 数据的基本单元。

(我之前已经漫谈过这些新类型 herehere 。)

因此,我认为 char16_tchar32_t 实际上非常恰本地命名,以反射(reflect)它们属于整数类型的“char”家族这一事实。

关于c++ - `char16_t` 和 `char32_t` 是用词不当吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789376/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com