Domanda

Come si fa a trovare nomi di locale validi?

Attualmente sto usando MAC OS X.
Ma le informazioni su altre piattaforme potrebbe anche essere utile.

#include <fstream>
#include <iostream>


int main(int argc,char* argv[])
{
    try
    {
        std::wifstream  data;
        data.imbue(std::locale("en_US.UTF-16"));
        data.open("Plop");
    }
    catch(std::exception const& e)
    {
        std::cout << "Exception: " << e.what() << "\n";
        throw;
    }
}

% g++ main.cpp
% ./a.out
Exception: locale::facet::_S_create_c_locale name not valid
Abort
È stato utile?

Soluzione

Questa pagina dice:

La chiamata al costruttore std :: locale ( "") crea un oggetto locale che rappresenta preferenze dell'utente. La norma non dice che cosa questo significa, ma su molti sistemi sostituti biblioteche tutto ciò si trova in una variabile d'ambiente (spesso LANG o LC_ALL) al posto della stringa vuota. Un nome comune per la locale americano, per esempio, è "en_US". (Sui sistemi POSIX è possibile digitare locale -a per elencare i nomi dei locali supportate.)

locale -a dovrebbe funzionare per voi.

Se vuoi dire programatically dalla std libary C ++ non sono sicuro.

Questo stack overflow di domanda è probabilmente, anche rilevanti, ma non sembra avere molta risposta avuto.

Modifica

Per usare UTF-16 che probabilmente sarà necessario utilizzare libiconv come indicato nel questa domanda .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top