我知道 C++11 有一个 4 字节的 char32_t 类型,我想知道是否可以在 C 中实现类似的东西。我正在编写的程序需要所有 char 数组都是 4 字节的倍数。
问问题
126 次
2 回答
1
您打算如何处理这些数据?您将只在 32 位变量中使用单个字节,还是在其中存储实际的 32 位数据?
一种简单的解决方案是创建自己的抽象数据类型,以便以后更改:
#include <stdint.h>
typedef int32_t mChar;
mChar myChar32Array[100]; // Allocates 100x32-bit values
但是,修补相关数据类型存在一个重大缺陷:许多库和代码片段在处理文本时char
假设 achar
是 a 。char
如果您计划使用字符串操作函数并希望它们能够跨多个系统工作,那么您总是将字符串声明为 的数组char
,而不是声明为signed char
or的数组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 回答