"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo formatear números con comas en C++ usando std::locale?

¿Cómo formatear números con comas en C++ usando std::locale?

Publicado el 2024-11-07
Navegar:296

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

Formato de números con comas en C

En C, la clase std::locale proporciona una forma dependiente de la configuración regional para formatear números con comas .

std::locale con std::stringstream

Para formatear un número como una cadena con comas, puede usar std::locale con std::stringstream de la siguiente manera:

#include 
#include 

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

Ejemplo de uso:

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"

Manejo de dobles

Para formatear un doble como una cadena con comas, puede usar el mismo enfoque que el anterior, pero el código Necesito manejar el punto decimal:

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

Descargo de responsabilidad:

Tenga en cuenta que la portabilidad de las soluciones anteriores puede ser un problema, ya que la configuración regional utilizada cuando se pasa "" puede variar según el sistema.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3