In einem Projekt, an dem ich gerade arbeite, verbinde ich mich mit einer proprietären dynamischen Bibliothek. Sobald ich die Funktion initialize
der Bibliothek starte, ändert sich das Verhalten der Protokollierung und des Druckens von Zahlen.Deaktivieren Sie Kommas in cout?
Kommas wurden an jeder dritten Dezimalstelle eingefügt. Ie.
cout << 123456789 << endl
verwendet 123456789
auszudrucken und druckt es jetzt 123,456,789
. Das ist furchtbar nervig, weil dieses Verhalten nicht das ist, was ich will.
Nach einigen Recherchen vermute ich ein Gebietsschema Problem. Ich habe versucht, diese Codezeile verwenden, nachdem die initialize
Funktion aufrufen
setlocale(LC_ALL,"C");
dachte, es könnte meine lokalen auf den Standard zurücksetzen; aber ohne Erfolg. Die Kommas bestehen weiter !!
Was fehlt mir?
Ich habe eine verwandte folgen auf Frage here.
das funktionierte gut für lokale Variablen in meinem Haupt! Die ausführbare Datei, die ich ausführe, ist jedoch auch mit mehr als 10 benutzerdefinierten Bibliotheken verbunden. Der Komma-Fehler hat sich leider auch in die gemeinsamen Bibliotheken 'stringstreams' und' couts' verbreitet. Gibt es eine bessere Möglichkeit, das Local global zu setzen, statt den gesamten Quellcode für meine Bibliotheken zu durchsuchen und 'imbue (std :: locale (" C "))' für jeden gefundenen String-Stream hinzuzufügen? – dinkelk
Ich habe die Frage genauer bearbeitet. – dinkelk