我正在寻找一种在整个程序中设置区域设置的方法,如果可能的话。
我在我的main函数中设置了这样的语言环境:
int main()
{
setlocale(LC_ALL, "");
....
return 0;
}
但是,它并没有在整个程序中将语言环境设置为我的不同类/方法。我宁愿不在每个将在屏幕上打印并创建C ++语言环境对象并传递的方法之上编写此行。它周围不太可以接受。
感谢您的时间。
答案 0 :(得分:8)
修改全局区域设置的两个功能是std::setlocale和std::locale::global。所有未来的C和C ++ I / O和字符串操作都将使用它们,除了在代码运行之前构造的六个标准I / O C ++流,因此如果需要,您可能必须单独填充它们:
#include <locale>
#include <clocale>
int main()
{
std::setlocale(LC_ALL, ""); // for C and C++ where synced with stdio
std::locale::global(std::locale("")); // for C++
std::cout.imbue(std::locale());
// cerr, clog, wcout, wcerr, wclog as needed
答案 1 :(得分:1)
setlocale用于设置语言环境,但其范围由我们传递的第一个参数(即标志)决定。在您的情况下,“LC_ALL”。
有两种方法可以设置区域设置。因此,根据setlocale的行为,如果将第二个参数作为“”或NULL传递,则它采用系统环境(LANG
)的默认值。代码参考如下:
setenv("LANG","en_US.utf8",1);
cout << "GET ENV .... " << getenv("LANG");
setlocale(LC_ALL,"");
另一种方法是使用语言环境,如下所示:
setlocale(LC_ALL,"en_US.utf8");