C++ 有效的区域设置名称
如何找到有效的语言环境名称 我目前正在使用MAC OS X。C++ 有效的区域设置名称,c++,locale,utf-16,C++,Locale,Utf 16,如何找到有效的语言环境名称 我目前正在使用MAC OS X。 但关于其他平台的信息也会很有用 #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
但关于其他平台的信息也会很有用
#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
#包括
#包括
int main(int argc,char*argv[])
{
尝试
{
std::wifstream数据;
数据。imbue(标准::语言环境(“en_US.UTF-16”);
数据公开(“Plop”);
}
捕获(标准::异常常量和e)
{
标准::cout
构造函数调用std::locale(“”)创建一个表示用户偏好的locale对象。标准没有说明这意味着什么,但在许多系统上,库会替换环境变量中的任何内容(通常是LANG
或LC\u ALL
)代替空字符串。例如,美国地区的通用名称是“en_US”。(在POSIX系统上,您可以键入locale-A
以列出受支持地区的名称)。
locale-a
应该适合您
如果您是从C++ STD库中编程的,我不确定。
可能也是相关的,但他似乎没有太多的回应
编辑
要使用UTF-16,您可能需要按照中所述使用。Martin我修复了您键入Local for Locale的位置。我想您可能知道这一点,但它们是不同的,如果您键入的是错误的,可能会损害您的谷歌工作:我有en_US.UTF-8和en_GB.UTF-8。但现在我需要解码一个UTF-16文件。好的,我已经扩展了答案是这样的。我认为libiconv是一个简短的答案。