如何找到有效的区域设置名称?
我目前使用的是MAC。
但关于其他平台的信息也会很有用。
#include <fstream>
#include <iostream>
int main(int argc,char* argv[])
{
try
{
std::wifstream data;
data.imbue(std::locale("en_US.UTF-16"));
data.open("Plop");
}
catch(std::exception const& e)
{
std::cout << "Exception: " << e.what() << "\n";
throw;
}
}
% g++ main.cpp
% ./a.out
Exception: locale::facet::_S_create_c_locale name not valid
Abort
发布于 2009-12-17 23:59:40
构造函数调用std:: locale ("")创建一个表示用户首选项的locale对象。该标准没有说明这意味着什么,但在许多系统上,库将环境变量(通常是LANG
或LC_ALL
)中的任何内容替换为空字符串。例如,美国语言环境的常用名称是"en_US“。(在POSIX系统上,您可以键入 locale -a
以列出支持的语言环境的名称。)
locale -a
应该可以为您工作。
如果你指的是来自C++标准库的编程,我不确定。
This stack overflow question可能也是相关的,但他似乎没有太多回应。
编辑
要使用UTF-16,您可能需要使用this question中提到的libiconv。
https://stackoverflow.com/questions/1922713
复制相似问题