std::numpunct<CharT>:: grouping, std::numpunct<CharT>:: do_grouping
|
Défini dans l'en-tête
<locale>
|
||
|
public
:
std:: string grouping ( ) const ; |
(1) | |
|
protected
:
virtual std:: string do_grouping ( ) const ; |
(2) | |
do_grouping
de la classe la plus dérivée.
Cette fonction retourne une chaîne,
vec
, qui est utilisée comme un vecteur de valeurs entières. (Par exemple,
"
\003
"
spécifie des groupes de 3 chiffres chacun, tandis que
"3"
implique des groupes de 51 chiffres chacun.). Chaque élément
vec
[
i
]
représente le nombre de chiffres dans le
i
ième groupe de chiffres de la partie entière du nombre, en comptant depuis la droite :
vec
[
0
]
contient le nombre de chiffres dans le groupe le plus à droite,
vec
[
1
]
- dans le deuxième groupe depuis la droite, etc. Le groupage indiqué par le dernier caractère,
vec
[
vec.
size
(
)
-
1
]
, est réutilisé de manière répétée pour grouper tous les chiffres restants dans la partie gauche du nombre. Si
vec
[
i
]
est non positif ou égal à
CHAR_MAX
la taille du groupe de chiffres correspondant est illimitée.
Valeur de retour
L'objet de type
std::string
contenant les groupes. Les spécialisations standards de
std::numpunct
retournent une chaîne vide, indiquant aucun groupement. Les groupements typiques (par exemple la locale
en_US
) retournent
"
\003
"
.
Exemple
#include <iostream> #include <limits> #include <locale> struct space_out : std::numpunct<char> { char do_thousands_sep() const { return ' '; } // séparer avec des espaces std::string do_grouping() const { return "\1"; } // groupes de 1 chiffre }; struct g123 : std::numpunct<char> { std::string do_grouping() const { return "\1\2\3"; } }; int main() { std::cout << "Locale par défaut : " << 12345678 << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new space_out)); std::cout << "Locale avec numpunct modifié : " << 12345678 << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new g123)); std::cout << "Locale avec groupement \\1\\2\\3 : " << std::numeric_limits<unsigned long long>::max() << '\n' << "Idem, pour un nombre à virgule flottante : " << std::fixed << 123456789.123456789 << '\n'; }
Sortie :
Locale par défaut : 12345678 Locale avec numpunct modifié : 1 2 3 4 5 6 7 8 Locale avec \1\2\3 grouping: 18,446,744,073,709,551,61,5 Idem, pour un nombre à virgule flottante : 123,456,78,9.123457
Voir aussi
|
[virtual]
|
fournit le caractère à utiliser comme séparateur de milliers
(fonction membre protégée virtuelle) |