Error de C ++ "error: locale :: facet :: _ S_create_c_locale name no válido" al ejecutar el programa desde la línea de comandos
Parece que tengo un problema con los locales en C ++. Cuando ejecuto mi programa desde Eclipse, todo funciona bien. Sin embargo, cuando intento ejecutarme desde la línea de comandos, sigo recibiendo este error:
error: locale :: facet :: _ S_create_c_locale nombre no es válido
Este es el código que dispara el error:
// 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;
}
La salida de "locale" da lo siguiente:
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"
También he intentado usar "de_DE.UTF-8" como la cadena local en lugar de "" (la forma en que debería ser en realidad), pero esto me da el mismo error.
Y curiosamente, el programa funciona bien cuando se ejecuta desde Eclipse. Estoy usando g ++ para compilar desde la línea de comandos con la siguiente versión:
Configurado con: --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM versión 5.0 (clang-500.2.79) (basado en LLVM 3.3svn) Objetivo: x86_64-apple-darwin12.4.0 Modelo de hilo: posix
¿Alguna idea de lo que podría estar mal aquí?
Aclamaciones,
Martín