0

我知道 C++11 有一个 4 字节的 char32_t 类型,我想知道是否可以在 C 中实现类似的东西。我正在编写的程序需要所有 char 数组都是 4 字节的倍数。

4

2 回答 2

1

您打算如何处理这些数据?您将只在 32 位变量中使用单个字节,还是在其中存储实际的 32 位数据?

一种简单的解决方案是创建自己的抽象数据类型,以便以后更改:

#include <stdint.h>
typedef int32_t mChar;
mChar myChar32Array[100]; // Allocates 100x32-bit values

但是,修补相关数据类型存在一个重大缺陷:许多库和代码片段在处理文本时char假设 achar是 a 。char如果您计划使用字符串操作函数并希望它们能够跨多个系统工作,那么您总是将字符串声明为 的数组char,而不是声明为signed charor的数组unsigned char。唯一应该使用unsigned char的情况是,如果您直接使用 8 位二进制数据并且不想处理符号扩展等意外的怪事,如果您不小心,这会给您带来时髦的值。

于 2015-02-13T19:19:04.420 回答
0

C11 标准确实支持char32_t以 UTF-32 编码的字符串,例如:

#include <uchar.h>

int main() {
    char32_t *str = U"Hello world";
}

该程序可以用 say 干净地编译gcc -std=c11

于 2015-02-13T19:50:59.323 回答