我知道C ++ 11有一个4字节的char32_t类型,我想知道是否有可能在C中实现类似的东西。我写的程序需要有所有char数组都是4个字节的倍数。
答案 0 :(得分:1)
您打算如何处理这些数据?您是仅在32位变量中使用单个字节,还是在其中存储实际的32位数据?
一个简单的解决方案是创建自己的抽象数据类型,以便以后可以更改它:
#include <stdint.h>
typedef int32_t mChar;
mChar myChar32Array[100]; // Allocates 100x32-bit values
虽然修补char
相关数据类型存在一个重大缺陷:许多库和代码片段假设在处理文本时char
是char
。如果您计划使用字符串操作函数并期望它们在多个系统中工作,则始终将字符串声明为char
的数组,而不是signed char
或unsigned char
。您应该使用unsigned char
的唯一时间是,如果您直接使用8位二进制数据,并且不想处理意外的奇怪信号,例如符号扩展,如果您不是,那将为您提供有趣的值。小心。
答案 1 :(得分:0)
C11标准支持使用UTF-32编码的字符串char32_t
,例如:
#include <uchar.h>
int main() {
char32_t *str = U"Hello world";
}
程序用gcc -std=c11
完全编译。