非常教程

C参考手册

本地化支持 | Localization support

LC_ALL

在头文件<locale.h>中定义

#define LC_ALL / *实现定义* /

#define LC_COLLATE / *实现定义* /

#define LC_CTYPE / *实现定义* /

#define LC_MONETARY / *实现定义* /

#define LC_NUMERIC / *实现定义* /

#define LC_TIME / *实现定义* /

上述每个宏常量都扩展为具有不同值的整数常量表达式,这些值适合用作第一个参数setlocale

不变

说明

LC_ALL

选择整个C语言环境

LC_COLLATE

选择C语言环境的归类类别

LC_CTYPE

选择C语言环境的字符分类类别

LC_MONETARY

选择C语言环境的货币格式类别

LC_NUMERIC

选择C语言环境的数字格式化类别

LC_TIME

选择C语言环境的时间格式类别

额外的宏常量,其名称LC_后面跟着至少一个大写字母,可以在中定义locale.h。例如,POSIX规范要求LC_MESSAGES(其控制,除其他事项外,perrorstrerror),和GNU C库另外限定LC_PAPER,LC_NAME,LC_ADDRESS,LC_TELEPHONE,LC_MEASUREMENT,和LC_IDENTIFICATION。

#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <wchar.h>
 
int main(void)
{
    setlocale(LC_ALL, "en_US.UTF-8"); // the C locale will be the UTF-8 enabled English
    setlocale(LC_NUMERIC, "de_DE");   // decimal dot will be German
    setlocale(LC_TIME, "ja_JP");      // date/time formatting will be Japanese
    wchar_t str[100];
    time_t t = time(NULL);
    wcsftime(str, 100, L"%A %c", localtime(&t));
    wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);
}

输出:

Number: 3,14
Date: 月曜日 2011年12月19日 18時04分40秒

参考

  • C11标准(ISO/IEC 9899:2011):
    • 7.11 / 3本地化<locale.h>(p:224)
  • C99标准(ISO/IEC 9899:1999):
    • 7.11/3本地化<locale.h>(p:205)
  • C89/C90标准(ISO/IEC 9899:1990):
    • 4.4本地化<locale.h>

另请参阅

setlocale

获取并设置当前的C语言环境(函数)

| C++ documentation for locale categories |

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。