Heim > Backend-Entwicklung > C++ > Wie kann ich Zahlen mit Kommas in C mit std::locale und std::stringstream formatieren?

Wie kann ich Zahlen mit Kommas in C mit std::locale und std::stringstream formatieren?

Barbara Streisand
Freigeben: 2024-10-29 18:13:03
Original
312 Leute haben es durchsucht

How can I format numbers with commas in C   using std::locale and std::stringstream?

Zahlen mit Kommas in C formatieren: Eine umfassende Lösung

In C ist das Formatieren von Zahlen mit Kommas eine häufige Aufgabe, die die Lesbarkeit verbessert Klarheit der numerischen Werte. Dieser Artikel stellt eine robuste Methode vor, um dies mithilfe der Kombination von std::locale und std::stringstream zu erreichen.

Die Lösung

Der Kern unserer Lösung liegt in Nutzung von std::locale, um einen lokalisierten Formatierungskontext einzurichten, und std::stringstream, um das formatierte Ergebnis zu erfassen. Die FormatWithCommas-Vorlagenmethode, die einen generischen numerischen Typ T annimmt, folgt diesen Schritten:

  1. Erstellen Sie ein std::stringstream-Objekt mit dem Namen ss.
  2. Legen Sie das Gebietsschema für ss fest, indem Sie imbue aufrufen (std::locale("")). Dabei wird das Standardsystemgebietsschema verwendet, das in der Regel dem Gebietsschema entsprechende Zahlenformatierungsregeln bereitstellt.
  3. Fügen Sie den numerischen Wert mithilfe des Operators << in ss ein. und geben Sie mit std::fixed eine feste Genauigkeit an.
  4. Geben Sie die Zeichenfolgendarstellung des formatierten Werts zurück, indem Sie str() auf ss aufrufen.

Hier ist der vollständige Code für die FormatWithCommas-Methode :

<code class="cpp">template<class T>
std::string FormatWithCommas(T value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}
Nach dem Login kopieren

Beispielverwendung

Die Verwendung unserer Methode ist unkompliziert. Zum Beispiel:

<code class="cpp">std::string result1 = FormatWithCommas(7800);
std::string result2 = FormatWithCommas(5100100);
std::string result3 = FormatWithCommas(201234567890);
// Outputs:
// result1 = "7,800"
// result2 = "5,100,100"
// result3 = "201,234,567,890"
Nach dem Login kopieren

Verarbeitung von Doubles

Die bereitgestellte Methode kann leicht geändert werden, um auch Doubles zu verarbeiten. Ersetzen Sie einfach T durch double in der Vorlagendeklaration:

template<>
std::string FormatWithCommas(double value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}

Überlegungen zur Portabilität

Es ist zu beachten, dass die Verwendung von „“ zur Angabe des Gebietsschemas möglicherweise nicht vollständig ist portierbar auf verschiedene Systeme. Um ein konsistentes Verhalten sicherzustellen, sollten Sie erwägen, das gewünschte Gebietsschema explizit anzugeben.

Das obige ist der detaillierte Inhalt vonWie kann ich Zahlen mit Kommas in C mit std::locale und std::stringstream formatieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage