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
Barbara StreisandOriginal
2024-10-29 18:13:03329Durchsuche

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();
}

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"

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!

Stellungnahme:
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