gpt4 book ai didi

c - 哪些组件使用语言环境变量?

转载 作者:IT王子 更新时间:2023-10-29 00:26:42 27 4
gpt4 key购买 nike

我读到每个进程都有一组与其相关联的语言环境变量。例如,这些是与我系统上的 bash 进程关联的语言环境变量:

$ locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=

我想知道实际使用这些语言环境变量的人。

C 标准函数(例如:fwrite())和 Linux 系统调用是否使用它们?某些 C 标准函数或某些 Linux 系统调用的行为是否会根据某些区域设置变量的值而有所不同?

或者只有某些程序可以使用这些语言环境变量?例如,我可以编写一个程序,根据 LANG 语言环境变量的值,以不同的语言向用户显示消息。

最佳答案

By default, C's standard library functions use the "C" locale .您可以将其切换到用户区域设置以启用特定于区域设置:

  • 字符处理
  • 整理
  • 日期/时间格式
  • 数字编辑
  • 货币格式
  • 消息传递

POSIX setlocale文档包含受其影响的与语言环境相关的函数的不完整列表:

catopen, exec, fprintf, fscanf, isalnum, isalpha, isblank, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, iswalnum, iswalpha, iswblank, iswcntrl, iswctype, iswdigit, iswgraph, iswlower, iswprint, iswpunct, iswspace, iswupper, iswxdigit, isxdigit, localeconv, mblen, mbstowcs, mbtowc, newlocale, nl_langinfo, perror, psiginfo, setlocale, strcoll, strerror, strfmon, strftime, strsignal, strtod, strxfrm, tolower, toupper, towlower, towupper, uselocale, wcscoll, wcstod, wcstombs, wcsxfrm, wctomb

例如:

printf("%'d\n", 1000000000);
printf("Setting LC_ALL to %s\n", getenv("LANG"));
setlocale(LC_ALL, ""); // Set user-preferred locale.
printf("%'d\n", 1000000000);

输出:

1000000000
Setting LC_ALL to en_US.UTF-8
1,000,000,000

关于c - 哪些组件使用语言环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50606668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com