c ++: Nummer mit Kommas formatieren?
Möchte ich schreiben eine Methode, die einen integer-und einen std::string
des integer formatiert mit Komma voneinander getrennt.
Beispiel Deklaration:
std::string FormatWithCommas(long value);
Beispiel:
std::string result = FormatWithCommas(7800);
std::string result2 = FormatWithCommas(5100100);
std::string result3 = FormatWithCommas(201234567890);
//result = "7,800"
//result2 = "5,100,100"
//result3 = "201,234,567,890"
Was ist der C++ - Weg von der Formatierung einer Zahl als string
mit Kommas?
(Bonus würde zu behandeln double
s auch.)
Kommentar zu dem Problem
möglich, Duplikat der gewusst Wie: einfügen von Leerzeichen in eine große Zahl, um Sie lesbarer zu machen?
möglich, Duplikat der Wie legen Sie den cout locale einfügen eines Kommas als Tausendertrennzeichen?
was lahm über diese doppelten Aussagen, dass ich suchte für diese Frage, bevor Sie mit den offensichtlichsten Suchbegriffen und nicht finden Fragen. Mein Titel ist besser und mehr auf den Punkt und ich mag die akzeptierte Antwort auf meine Frage besser als die Antworten auf alle diese.
Wenn hohe Leistung ist ein Problem, das Sie sehen können, meine Frage: Wie kann ich die Formatierung der Zahl mit Kommas Leistung?
InformationsquelleAutor der Frage User | 2011-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
std::locale
mitstd::stringstream
Haftungsausschluss: Portabilität könnte ein Problem sein, und Sie sollten wahrscheinlich betrachten, welches Gebietsschema verwendet wird, wenn
""
übergebenInformationsquelleAutor der Antwort Jacob
Können Sie tun, wie Jakob vorgeschlagen und
imbue
mit der""
Gebietsschema - aber dies wird mit der Standard-system, das keine Garantie, dass Sie das Komma. Wenn Sie erzwingen möchten, der comma (unabhängig von den Systemen Standard-locale-Einstellungen) können Sie dies tun, indem Sie Ihre eigenennumpunct
Facette. Zum Beispiel:InformationsquelleAutor der Antwort Node
Halte ich folgende Antwort einfacher zu sein als die anderen:
Dies wird schnell und korrekt einfügen Kommas in den Text stellen.
InformationsquelleAutor der Antwort carljalal
basiert auf den Antworten oben, landete ich mit diesem code:
InformationsquelleAutor der Antwort Radif Sharafullin
Wenn Sie mit Qt, können Sie diesen code verwenden:
Vergessen Sie auch nicht hinzufügen
#include <QLocale>
.InformationsquelleAutor der Antwort troyane
Dies ist ziemlich old-school, ich benutze es in großen Schleifen zu vermeiden, die Instanziierung einer anderen string-Puffer.
InformationsquelleAutor der Antwort Tom Serink
Es flexibler zu machen, Sie bauen könnten, die Facette mit einem benutzerdefinierten Tausende sep und Gruppierung string.
Auf diese Weise können Sie es zur Laufzeit.
InformationsquelleAutor der Antwort Marcel