std::locale::facet::_S_create_c_locale 名称无效

std::locale::facet::_S_create_c_locale name not valid

本文关键字:locale 无效 facet std create      更新时间:2023-10-16

我正在尝试学习不同的语言环境并处理 unicode,我选择将所有字符串设为 UTF-8,我决定运行以下代码,但由于某种原因它抛出了一个错误,我无法弄清楚为什么。到目前为止,我尝试了所有语言环境,除了"C"之外没有一个工作。我尝试了此处找到的区域设置列表:http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html

和他们的例子:

#include <iostream>
#include <string>
int main()
{
    std::locale::global(std::locale("en_US.UTF-8"));
    return 0;
}

结果:

在抛出"std::runtime_error"
实例后终止调用 what(): locale::facet::_S_create_c_locale 名称无效

我做错了什么?

我正在使用 Mingw-Builds gcc/g++ 4.8.1 和 Windows 8 上的最新代码块。语言设置为EN_US,有时我会切换到EN_GB。

上周我遇到了同样的问题,我编写了一个程序来打印Windows操作系统下所有支持的语言环境名称。

查看我的答案 打印所有标准::区域设置名称 (Windows)

您要查找的区域设置只是Windows下的"en-US"。