"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment formater des nombres avec des virgules en C++ en utilisant std :: locale ?

Comment formater des nombres avec des virgules en C++ en utilisant std :: locale ?

Publié le 2024-11-07
Parcourir:662

How to Format Numbers with Commas in C   Using std::locale?

Formatage des nombres avec des virgules en C

En C , la classe std::locale fournit un moyen dépendant des paramètres régionaux de formater les nombres avec des virgules .

std::locale avec std::stringstream

Pour formater un nombre sous forme de chaîne avec des virgules, vous pouvez utiliser std::locale avec std::stringstream comme suit :

#include 
#include 

template
std::string FormatWithCommas(const T& value) {
  std::stringstream ss;
  ss.imbue(std::locale(""));  // Use the system's locale
  ss 

Exemple d'utilisation :

std::string result1 = FormatWithCommas(7800);
std::string result2 = FormatWithCommas(5100100);
std::string result3 = FormatWithCommas(201234567890);

// result1 = "7,800"
// result2 = "5,100,100"
// result3 = "201,234,567,890"

Gestion des doubles

Pour formater un double sous forme de chaîne avec des virgules, vous pouvez utiliser la même approche que ci-dessus, mais le code sera besoin de gérer le point décimal :

template
std::string FormatWithCommas(const T& value) {
  std::stringstream ss;
  ss.imbue(std::locale(""));
  ss 

Avertissement :

Notez que la portabilité des solutions ci-dessus peut être un problème, car les paramètres régionaux utilisés lorsque "" sont transmis peuvent varier en fonction du système.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3