Namespaces
Variants

std:: numpunct

From cppreference.net
Definido en el encabezado <locale>
template < class CharT >
class numpunct ;

El facet std::numpunct encapsula las preferencias de puntuación numérica. Las operaciones de E/S de flujo utilizan std::numpunct a través de std::num_get y std::num_put para analizar la entrada numérica y formatear la salida numérica.

Los números que son compatibles con std::numpunct tienen el formato descrito a continuación. Aquí digit representa la base numérica especificada por el valor del argumento fmtflags , thousands-sep y decimal-point son los resultados de las funciones thousands_sep() y decimal_point() respectivamente.

El formato de los valores enteros es el siguiente:

integer     ::= [signo] unidades
signo       ::= masmenos
masmenos    ::= '+' | '-'
unidades    ::= digitos [separador-miles unidades]
digitos     ::= digito [digitos]

El número de dígitos entre los thousand-sep s (tamaño máximo de digits ) se especifica mediante el resultado de grouping() .

El formato de los valores de punto flotante es el siguiente:

floatval    ::= [signo] unidades [punto-decimal [dígitos]] [e [signo] dígitos] |
                [signo]        punto-decimal  dígitos   [e [signo] dígitos]
e           ::= 'e' | 'E'
cpp/locale/locale/facet std-numpunct-inheritance.svg

Diagrama de herencia

Contenidos

Especializaciones

La biblioteca estándar garantiza proporcionar las siguientes especializaciones (están requeridas para ser implementadas por cualquier objeto locale ):

Definido en el encabezado <locale>
std :: numpunct < char > proporciona equivalentes de las preferencias de la configuración regional "C"
std :: numpunct < wchar_t > proporciona equivalentes de caracteres anchos de las preferencias de la configuración regional "C"

Tipos anidados

Tipo Definición
char_type CharT
string_type std:: basic_string < CharT >

Miembros de datos

Miembro Descripción
std::locale::id id [static] el identificador del facet

Funciones miembro

construye un nuevo facet numpunct
(función miembro pública)
destruye un facet numpunct
(función miembro protegida)
invoca do_decimal_point
(función miembro pública)
invoca do_thousands_sep
(función miembro pública)
invoca do_grouping
(función miembro pública)
invoca do_truename o do_falsename
(función miembro pública)

Funciones miembro protegidas

proporciona el carácter a utilizar como punto decimal
(función miembro protegida virtual)
proporciona el carácter a utilizar como separador de miles
(función miembro protegida virtual)
[virtual]
proporciona los números de dígitos entre cada par de separadores de miles
(función miembro protegida virtual)
proporciona la cadena a utilizar como nombre del valor booleano true y false
(función miembro protegida virtual)

Ejemplo

El siguiente ejemplo cambia las representaciones de cadena de true y false :

#include <iostream>
#include <locale>
struct french_bool : std::numpunct<char>
{
    string_type do_truename() const override { return "vrai"; }
    string_type do_falsename() const override { return "faux"; }
};
int main()
{
    std::cout << "default locale: "
              << std::boolalpha << true << ", " << false << '\n';
    std::cout.imbue(std::locale(std::cout.getloc(), new french_bool));
    std::cout << "locale with modified numpunct: "
              << std::boolalpha << true << ", " << false << '\n';
}

Salida:

default locale: true, false
locale with modified numpunct: vrai, faux

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 338 C++98 el token sign permitía un espacio en blanco opcional después de + o - se eliminó el espacio en blanco

Véase también

crea una faceta numpunct para la configuración regional nombrada
(plantilla de clase)