Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有效的区域设置名称_C++_Locale_Utf 16 - Fatal编程技术网

C++ 有效的区域设置名称

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

如何找到有效的语言环境名称

我目前正在使用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");
    }
    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是一个简短的答案。