Erro C ++ “falha: locale :: faceta :: _ S_create_c_locale nome não válido” ao executar o programa a partir da linha de comando
Eu pareço ter um problema com as localidades em C ++. Quando executo meu programa a partir do Eclipse, tudo funciona bem. No entanto, quando tento executar a partir da linha de comando, continuo recebendo este erro:
falha: locale :: facet :: _ S_create_c_locale nome não válido
Este é o código que aciona o erro:
// 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;
}
A saída de "locale" fornece o seguinte:
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"
Eu também tentei usar "de_DE.UTF-8" como a string locale em vez de "" (a maneira que deveria ser na verdade), mas isso me dá o mesmo erro.
E, estranhamente, o programa funciona bem quando executado dentro do Eclipse. Eu estou usando g + + para compilar a partir da linha de comando com a seguinte versão:
Configurado com: --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = /usr/include/c ++/4.2.1 Apple LLVM versão 5.0 (clang-500.2.79) (com base no LLVM 3.3svn) Destino: x86_64-apple-darwin12.4.0 Modelo de encadeamento: posix
Alguma ideia do que pode estar errado aqui?
Felicidades,
Martin