locale.h
locale.h是C程式设计语言标準函式馆的一个头档案,声明了C语言本地化函式。 这些函式用于在处理多种自然语言的软体编程设计时,把程式调整到特定的区域设定.。这些区域设定影响到C语言标準库的输入/输出函式。
介绍
locale.h是C程式设计语言标準函式馆的一个头档案,声明了C语言本地化函式. 这些函式用于在处理多种自然语言的软体编程设计时,把程式调整到特定的区域设定. 这些区域设定影响到C语言标準库的输入/输出函式.
所包含的函式
C语言本地化函式与数据类型定义在locale.h (clocale头档案用于C++)
Function | Description |
---|---|
setlocale | 设定与读取当前C locale |
localeconv | 返回当前locale的货币与数值的格式细节 |
批评
C语言标準中定义的区域设定函式的最大问题是,区域设定状态是全局的。这意味着一个程式在一个时刻只能有一个locale设定。实现程式同时具有多个locale是非常困难的。
Visual C++运行时刻库定义了函式_configthreadlocale,可以打开或者关闭执行绪相关区域设定(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, ""); conststruct lconv *const currentlocale = localeconv(); printf("In the current locale, the default currency symbol is: %s\n", currentlocale->currency_symbol); returnEXIT_SUCCESS; |