【发布时间】:2026-02-03 10:40:01
【问题描述】:
我正在尝试学习不同的语言环境和处理 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 名称无效
我做错了什么?
我在 Windows 8 上使用 Mingw-Builds gcc/g++ 4.8.1 和最新的代码块。语言设置为 EN_US,有时我切换到 EN_GB。
【问题讨论】:
-
您的系统上是否安装了本地? Valid Locale Names
-
你和
std::locale::global(std::locale(""));有同样的错误吗见std::locale breakage on MacOS 10.6 with LANG=en_US.UTF-8 -
我不确定您所说的“已安装的语言环境”是什么意思,但我的系统语言是 en_US,有时我会将其切换为 en_GB。使用
std::locale("")打印C我没有那个错误。 -
旧的编译器版本。
-
Gcc/g++ 4.8.1 带有最新代码块的窗口。我会将所有这些添加到 OP 中。