C ++ Ошибка «сбой: locale :: facet :: _ S_create_c_locale name not valid» при запуске программы из командной строки

Кажется, у меня проблема с локалями в C ++. Когда я запускаю свою программу из Eclipse, все работает нормально. Тем не менее, когда я пытаюсь запустить из командной строки, я получаю эту ошибку:

Сбой: locale :: facet :: _ S_create_c_locale имя недействительно

Это код, который вызывает ошибку:

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

Вывод «locale» дает следующее:

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"

Я также пытался использовать «de_DE.UTF-8» в качестве строки локали вместо «» (так, как это должно быть на самом деле), но это дает мне ту же ошибку.

И как ни странно, программа отлично работает при запуске из Eclipse. Я использую g ++ для компиляции из командной строки со следующей версией:

Настраивается с помощью: --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM версии 5.0 (clang-500.2.79) (на основе LLVM 3.3svn) Цель: x86_64-apple-darwin12.4.0 Модель потока: posix

Есть идеи, что здесь может быть не так?

Ура,

Мартин

Ответы на вопрос(1)

Ваш ответ на вопрос