Locale.h
C标准函数库 |
---|
一般 |
|
杂项 |
|
|
locale.h是C程序设计语言标准函数库的一个头文件,声明了C语言本地化函数。[1][2] 这些函数用于在处理多种自然语言的软件编程设计时,把程序调整到特定的区域设置. 这些区域设置影响到C语言标准库的输入/输出函数.
所包含的函数
C语言本地化函数与数据类型定义在locale.h (clocale头文件用于C++).[3]
Function | Description |
---|---|
setlocale | 设置与读取当前C locale |
localeconv | 返回当前locale的货币与数值的格式细节 |
批评
C语言标准中定义的区域设置函数的最大问题是,区域设置状态是全局的。这意味着一个程序在一个时刻只能有一个locale设置。实现程序同时具有多个locale是非常困难的。[4]
Visual C++运行时刻库定义了函数_configthreadlocale
[5],可以打开或者关闭线程相关区域设置(thread-specific locale)。另外一个运行时刻库函数_setmbcp
,在线程中创建限于本线程使用的区域设置数据结构。此后,就可以在该线程使用setlocale标准库函数了。但此种方法仅限于Windows平台。
例子
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main(void) { /* Locale is set to "C" before this. This call sets it to the "current locale" by reading environment variables: */ setlocale(LC_ALL, ""); const struct lconv * const currentlocale = localeconv(); printf("In the current locale, the default currency symbol is: %s\n", currentlocale->currency_symbol); return EXIT_SUCCESS; }
参考文献
- glibc中定义的各种locale的列表,包括了各种细节 (页面存档备份,存于互联网档案馆)
- ^ ISO/IEC 9899:1999 specification (PDF). . p. 204, § 7.11 Localization [2012-09-02]. (原始内容存档 (PDF)于2011-01-24).
- ^ Prata, Stephen. C primer plus. Sams Publishing. 2004. Appendix B, Section V: The Standard ANSI C Library with C99 Additions. ISBN 0-672-32696-5.
- ^ locale.h. utas.edu.au. infosys. [14 September 2011]. (原始内容存档于2012-06-04).
- ^ The Standard C Locale and the Standard C++ Locales. Rogue Wave Software, Inc. 1996 [2012-09-02]. (原始内容存档于2020-02-19).
- ^ Microsoft的MSDN上的相关帮助文章. [2012-09-06]. (原始内容存档于2016-05-19).