2012-03-29 17 views
7

In C++, posso impostare locale corrente in questo modo:Ottieni le impostazioni internazionali globali attualmente impostate in C++?

std::locale::global(std::locale(name)) 

Ma come posso ottenere l'attuale localizzazione globale?

Nel mio codice, ho bisogno di ottenere le impostazioni locali correnti, salvarlo in un tmp var, impostare le impostazioni internazionali globali su qualcos'altro, emettere qualcosa, quindi riportarlo alle impostazioni locali precedenti.

+0

Non l'ho usato, ma è questo quello che cerchi? http://en.cppreference.com/w/cpp/io/ios_base/getloc edit: non importa, ho trovato che il valore restituito è la locale corrente. Guarda la risposta di Corbin. – chris

+0

Vuoi le impostazioni internazionali globali (di default a '" C "'), o le impostazioni internazionali dell'ambiente? –

+0

Desidero il valore di qualsiasi utente impostato prima di utilizzare 'std :: locale :: global'. – Frank

risposta

14

Se si chiama il costruttore predefinito di std::locale, lo si ottiene.

std::locale the_global_locale; // <-- automatically correct to std::locale::global 
           //  or a copy of std::locale::classic 

Maggiori informazioni qui: http://en.cppreference.com/w/cpp/locale/locale/locale

2

Come IPC dice, il costruttore predefinito per std :: locale ti dà una copia del corrente locale globale, ma perché avete bisogno di memorizzare nella cache e quindi ripristinare il locale globale?

Le routine C++ che utilizzano una locale in genere possono utilizzare un oggetto locale C++ specificato dall'utente, quindi non è necessario modificare le impostazioni internazionali globali. Utilizzare gli oggetti locali dovrebbe essere preferibile all'utilizzo della locale globale C++.

Problemi correlati