|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
C++: Settare il locale globale una volta per tutte
per uno stream lo so fare:
... cout.imbue(std::locale("")); ... Così si puo usare la virgola come sep decimale... ma vorrei sapere come si setta la proprietà global (one-shoot) . perchè non capisco la sintassi da adoperare. Esempiuccio please |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Scusate se uppo,mi serve davvero.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' questo per caso ?
std::locale::global(const locale& x); Se è questo mi faresti un esempio di utilizzo di queste cose ? |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Quote:
non capivo come fare la chiamata che a questo punto dovrebbe (correggimi se sbaglio) essere questa std::locale::global(std::locale("")); Il più importante è quello che ti consente di leggere nella locale nativo un input stream (sopratutto ifstream e stringstream). Esempio: leggere un double da file in italiano considerando la virgola come separatore decimale e il punto come separatore di migliaia. Sembra che molti programmatori italiani abbiano l'inclinazione ad usare il punto anche quando l'applicazione è specificamente rivolta ad italiani. Cosicchè se come è normale, tu hai in windows\impostazioni internazionali la virgola,il programma si rincogl****sce come minimo. Oppure come fa un programma ingegneristico (800 euro) che conosco che ti avverte di cambiare le impostazioni internazionali se no non si avvia il programma invece il metodo di cui parliamo prende automaticamente l'impostazione dalla variabile globale (separatore) e le altre ,in base a cosa hai settato nel SO. Ora normalmente lo iostream viene inizializzato con il locale standard "C" che usa il punto.Il mio intento è settare il locale nativo all'inizio del programma. Spero cionci di essere stato chiaro provo a vedere se la chiamata funziona PS Ti pare che uno debba spendere 800 euro per un programma fatto in questo modo? |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Concordo ed è persino molto utile
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Piccolo inconveniente:
se setti solamente il locale globale e poi usi normalmente uno stream:crasha. Questo è dovuto al fatto che allo startup gli stream vengono inizializzati con il default locale "C" (Inglese Americano ASCI);quindi comunque bisogna risettarli al locale scelto con cout.imbue(std::locale("")); (setta il locale del SO) oppure se vuoi l'italiano: cout.imbue(std::locale("Italian_Italy.850")); molto utile a runtime la proprietà name per settare ad esempio al volo una stringa messaggio nella lingua scelta. Mi sembra sia tutto. Grazie Cionci per essere stato a sentirmi ed avermi aiutato |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Bene è molto interessante...
la vecchia libreria C aveva setlocale...magari quella puoi aiutarti a settare il locale di default anche per gli stream... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:10.



















