C语言 newlocale(3)的掩码位具体是什么意思?



newlocale(3)的手册页部分说:

The mask is the logical OR of the following:
LC_COLLATE_MASK   Collation  
LC_CTYPE_MASK     Character type  
LC_MESSAGES_MASK  Messages
LC_MONETARY_MASK  Monetary
LC_NUMERIC_MASK   Numeric
LC_TIME_MASK      Time
LC_ALL_MASK       The logical OR of all of the above

但它没有说明每个掩码位实际上具体表示。在我的例子中,我需要AM_STRPM_STR、月份缩写(ABMON_1,…)、完整月份名称(MON_1,…)、工作日缩写(ABDAY_1,…)和完整工作日名称(DAY_1,…)的本地化字符串。

作为一个有根据的猜测,我认为我需要LC_MESSAGES_MASK——但是我也需要LC_TIME_MASK吗?

您需要LC_TIME_MASK;你不需要LC_MESSAGES_MASK来满足你的要求。

LC_MESSAGES控制错误消息,而不是时间格式。要了解诸如LC_TIME之类的"unmasking"名称的含义,请参阅setlocale(3)的手册页。它们是标准的C语言(尽管链接到的POSIX页面包含一些扩展-特别是"POSIX"区域设置)。

您可以在这里找到POSIX中区域设置的详细描述,

定义了不同的类型

  1. LC_CTYPE字符分类和大小写转换。
  2. LC_COLLATE排序顺序。
  3. LC_MONETARY货币格式。
  4. LC_NUMERIC数字格式,非货币格式。
  5. LC_TIME日期和时间格式。
  6. LC_MESSAGES信息和诊断消息的格式交互反应。

相关内容

  • 没有找到相关文章

最新更新