gpt4 book ai didi

c++ - 如何获取我的环境的当前语言环境?

转载 作者:IT老高 更新时间:2023-10-28 12:59:46 27 4
gpt4 key购买 nike

曾在 Linux 中尝试过以下代码,但在不同的 LANG 设置下总是返回“C”。

#include <iostream>
#include <locale.h>
#include <locale>
using namespace std;

int main()
{
cout<<"locale 1: "<<setlocale(LC_ALL, NULL)<<endl;
cout<<"locale 2: "<<setlocale(LC_CTYPE, NULL)<<endl;

locale l;
cout<<"locale 3: "<<l.name()<<endl;
}

$ ./a.out
locale 1: C
locale 2: C
locale 3: C
$
$ export LANG=zh_CN.UTF-8
$ ./a.out
locale 1: C
locale 2: C
locale 3: C

我应该怎么做才能在 Linux(如 Ubuntu)中获得当前的语言环境设置?

另一个问题是,在 Windows 中获取语言环境的方法是否相同?

最佳答案

来自 man 3 setlocale(新格言:“如有疑问,请阅读整个手册页。”):

If locale is "", each part of the locale that should be modified is set according to the environment variables.

所以,我们可以通过在程序开头调用setlocale来读取环境变量,如下:

#include <iostream>
#include <locale.h>
using namespace std;

int main()
{
setlocale(LC_ALL, "");
cout << "LC_ALL: " << setlocale(LC_ALL, NULL) << endl;
cout << "LC_CTYPE: " << setlocale(LC_CTYPE, NULL) << endl;
return 0;
}

我的系统不支持 zh_CN 语言环境,如下输出所示:

$ ./a.out LC_ALL: en_US.utf8LC_CTYPE: en_US.utf8$ export LANG=zh_CN.UTF-8$ ./a.out LC_ALL: CLC_CTYPE: C

Windows:我对 Windows 语言环境一无所知。我建议从 MSDN search 开始,然后打开 单独的 Stack Overflow 问题(如果您仍有疑问)。

关于c++ - 如何获取我的环境的当前语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170488/

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