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