1

我正在尝试<ctype.h>使用查找表和位掩码(此方法)构建一个实现。但是我在 C11 标准中看到我需要一些关于当前语言环境的信息:

7.4 字符处理<ctype.h>

[...]

2 这些函数的行为受当前语言环境的影响。

那么,我需要一个<locale.h>实现吗?如何<ctype.h>使用 C 标准库管理我的实现?

4

1 回答 1

1

对 8 位字符执行此操作的一种快速简单的方法是为每个定义的 LC_CTYPE 值设置一个位掩码。对于宽字符类型,您可以通过某种方法(例如 2 阶段查找)来减小表的大小。为了提高效率,这需要针对每个字符编码进行设计。对 LC_CTYPE 进行动态查找将允许更轻松地添加新的语言环境。

在我看来,您可以使用 16 个左右的 1 字节表来涵盖西方语言。做所有事情需要大约 50 张桌子,其中一些非常乏味。

于 2012-08-05T13:19:21.320 回答