Hallo zusammen,
heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt: Wie kann ich denn den "Trenner für die Tausender" deaktivieren? Bei einer Jahreszahl sieht das ungewöhnlich aus.Unsere Antwort bzw. unser Lösungsvorschlag darauf war:Der "Trenner für Tausender"(radix character) wird von den Facetten num_get und num_put bestimmt. Die default C locale verwendet keinen radix character. Sie können also für die Ausage von Ganzzahlen ohne Trennzeichen die num_put facette der default C localen verwenden. Es gibt viele Lösungen die Ausgabe des radix characters zu unterdrücken, hier nur eine Möglichkeit:
#include <iostream>
#include <locale>
using namespace std;
template <typename char_t, typename trait_s> void print_without_radix ( basic_ostream<char_t,trait_s>& os, int i ) {
locale old = os.getloc(); //sichern der alten locale
os.imbue( locale::classic() ); //verwenden der classic C locale für Aussgabe
os << i; //die Ausgabe des Integers
os.imbue(old); //wiederherstellen der alten locale
}
Sollte das Jahr Teil einer Datumsklasse sein, würde ich aber empfehlen, dass Datum nicht als Zahlen auszugeben ( stellen Sie sich nur einmal vor, die Formatflags des Streams geben als Basis für Zahlen das Hexadezimalsystem an ). Für die Ausgabe von Größen wie Uhrzeit und Datum ist eigentlich die
time_put Facette der locale zuständig. Dies verzichtet dann auch von sich aus auf den radix character, und ignoriert es wenn eine andere Basis für Zahlen angegeben wird, usw. .
Wir hoffen, vielen Besuchern der
MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.
Viele Grüße,
Markus Klein
MSDN Hotline für MSDN Online Deutschland
Disclaimer:Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können. Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline
Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen sowie die allgemein gültigen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.