Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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++错误:“失败:LoaLe::小面点::S.SyCeReTyC.LoalALE名称无效”,当从命令行运行程序时 我在C++中似乎有一个问题。当我在Eclipse中运行我的程序时,一切正常。但是,当我尝试从命令行运行时,我不断遇到以下错误:_C++_Utf 8_G++_Locale_Libstdc++ - Fatal编程技术网

C++错误:“失败:LoaLe::小面点::S.SyCeReTyC.LoalALE名称无效”,当从命令行运行程序时 我在C++中似乎有一个问题。当我在Eclipse中运行我的程序时,一切正常。但是,当我尝试从命令行运行时,我不断遇到以下错误:

C++错误:“失败:LoaLe::小面点::S.SyCeReTyC.LoalALE名称无效”,当从命令行运行程序时 我在C++中似乎有一个问题。当我在Eclipse中运行我的程序时,一切正常。但是,当我尝试从命令行运行时,我不断遇到以下错误:,c++,utf-8,g++,locale,libstdc++,C++,Utf 8,G++,Locale,Libstdc++,失败:区域设置::方面::\u S\u创建\u c\u区域设置名称无效 这是触发错误的代码: // Set up UTF8 file stream string fileName = "./sz.txt"; wifstream inFileStream; try { setlocale(LC_ALL, ""); inFileStream.open(fileName.c_str()); inFileStream.imbue(locale("")); if(!inF

失败:区域设置::方面::\u S\u创建\u c\u区域设置名称无效

这是触发错误的代码:

// Set up UTF8 file stream
string fileName = "./sz.txt";
wifstream inFileStream;

try {
    setlocale(LC_ALL, "");
    inFileStream.open(fileName.c_str());
    inFileStream.imbue(locale(""));
    if(!inFileStream) {
    return EXIT_FAILURE;
    }
}
catch (const std::exception &exc) {
    wcout << "Error while trying to create UTF8 file stream." << endl;
    std::cerr << exc.what() << endl;
    if( inFileStream.is_open() )
        inFileStream.close();

    return EXIT_FAILURE;
}
我还尝试使用de_de.UTF-8作为区域设置字符串,而不是实际使用的方式,但这给了我同样的错误

奇怪的是,该程序在Eclipse中运行时运行良好。我正在使用g++从命令行编译以下版本:

配置为:-prefix=/Applications/Xcode.app/Contents/Developer/usr-配置为gxx include dir=/usr/include/c++/4.2.1 基于LLVM 3.3svn的Apple LLVM版本5.0 clang-500.2.79 目标:x86_64-apple-darwin12.4.0 线程模型:posix

你知道这里可能出了什么问题吗

干杯

马丁

失败:区域设置::方面::\u S\u创建\u c\u区域设置名称无效

在非GNU平台上,GCC没有足够好的语言环境支持,这种失败是典型的。请参见此处的手册和libstdc++选项说明:

选择特定于目标的基础语言环境包。选择“IEEE1003.1-2001”指定基于langinfo/iconv/catgets的X/Open标准Unix ieee Std.1003.1-2001模型,“gnu”指定基于gnu C库langinfo/iconv/gettext功能的模型,gnu C库“generic”使用包含C语言环境信息的通用C抽象,“newlib”指定newlib C库模型,该模型在处理ctype时仅与“generic”模型不同,或者“darwin”忽略了“generic”模型所需的wchar\t专门化

如果未明确指定,配置过程将尝试从上述选择中猜测最合适的包。默认值为“通用”。在基于glibc的2.3及更新版本系统上,会自动选择“gnu”。在基于newlib的系统上,会自动选择“-with_newlib=yes”和OpenBSD的“newlib”。在Mac OS X上,会自动选择“darwin”。此选项可以更改库ABI

如果您查看libstdc++库的源代码,您将看到,除了“gnu”模型之外,所有其他模型几乎都是只支持C语言环境的存根。有些平台根本没有线程安全的区域设置支持。其他平台,如达尔文AFAIK,我不拥有或访问MACOS X达尔文,确实提供足够的线程安全区域API,这应该使得在LISSTDC ++中实现完全C++区域支持成为可能。不幸的是,还没有人这样做

LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"