std::numpunct<CharT>:: grouping, std::numpunct<CharT>:: do_grouping
|
Definido en el encabezado
<locale>
|
||
|
public
:
std:: string grouping ( ) const ; |
(1) | |
|
protected
:
virtual std:: string do_grouping ( ) const ; |
(2) | |
do_grouping
de la clase más derivada.
Esta función retorna una cadena,
vec
, que se utiliza como un vector de valores enteros. (Por ejemplo,
"
\003
"
especifica grupos de 3 dígitos cada uno, mientras que
"3"
implica grupos de 51 dígitos cada uno.). Cada elemento
vec
[
i
]
representa el número de dígitos en el
i
-ésimo grupo de dígitos de la parte entera del número, contando desde la derecha:
vec
[
0
]
contiene el número de dígitos en el grupo más a la derecha,
vec
[
1
]
- en el segundo grupo desde la derecha, etc. La agrupación indicada por el último carácter,
vec
[
vec.
size
(
)
-
1
]
, se reutiliza repetidamente para agrupar todos los dígitos restantes en la (parte izquierda de) el número. Si
vec
[
i
]
es no positivo o igual a
CHAR_MAX
el tamaño del grupo de dígitos correspondiente es ilimitado.
Valor de retorno
El objeto de tipo
std::string
que contiene los grupos. Las especializaciones estándar de
std::numpunct
retornan una cadena vacía, indicando que no hay agrupación. Las agrupaciones típicas (por ejemplo, la configuración regional
en_US
) retornan
"
\003
"
.
Ejemplo
#include <iostream> #include <limits> #include <locale> struct space_out : std::numpunct<char> { char do_thousands_sep() const { return ' '; } // separar con espacios std::string do_grouping() const { return "\1"; } // grupos de 1 dígito }; struct g123 : std::numpunct<char> { std::string do_grouping() const { return "\1\2\3"; } }; int main() { std::cout << "Locale predeterminado: " << 12345678 << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new space_out)); std::cout << "Locale con numpunct modificado: " << 12345678 << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new g123)); std::cout << "Locale con agrupación \\1\\2\\3: " << std::numeric_limits<unsigned long long>::max() << '\n' << "Lo mismo, para un número de punto flotante: " << std::fixed << 123456789.123456789 << '\n'; }
Salida:
Locale predeterminado: 12345678 Locale con numpunct modificado: 1 2 3 4 5 6 7 8 Locale con agrupación \1\2\3: 18,446,744,073,709,551,61,5 Lo mismo, para un número de punto flotante: 123,456,78,9.123457
Véase también
|
[virtual]
|
proporciona el carácter a utilizar como separador de miles
(función miembro protegida virtual) |