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
Есть идеи, что здесь может быть не так?
Ура,
Мартин