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

questionAnswers(1)

yourAnswerToTheQuestion