C ++ Error „failure: locale :: facet :: _ S_create_c_locale nazwa niepoprawna” podczas uruchamiania programu z linii poleceń

Wydaje mi się, że mam problem z lokalizacjami w C ++. Kiedy uruchamiam program z Eclipse, wszystko działa poprawnie. Jednak gdy próbuję uruchomić z linii poleceń, otrzymuję ten błąd:

failure: locale :: facet :: _ S_create_c_locale nazwa niepoprawna

To jest kod, który uruchamia błąd:

// 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;
}

Wyjście „locale” daje następujące informacje:

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"

Próbowałem również użyć „de_DE.UTF-8” jako łańcucha ustawień regionalnych zamiast „” (tak powinno być w rzeczywistości), ale to daje mi ten sam błąd.

Co dziwne, program działa dobrze, gdy jest uruchamiany z poziomu Eclipse. Używam g ++ do kompilacji z linii poleceń z następującą wersją:

Skonfigurowane przy pomocy: --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM wersja 5.0 (clang-500.2.79) (na podstawie LLVM 3.3svn) Cel: x86_64-apple-darwin12.4.0 Model wątku: posix

Jakiś pomysł, co tu może być nie tak?

Twoje zdrowie,

Jaskółka oknówka

questionAnswers(1)

yourAnswerToTheQuestion