std:: formatted_size
|
Défini dans l'en-tête
<format>
|
||
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (depuis C++20) |
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: wformat_string < Args... > fmt, Args && ... args ) ; |
(2) | (depuis C++20) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(3) | (depuis C++20) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(4) | (depuis C++20) |
Détermine le nombre total de caractères dans la chaîne formatée en formatant args selon la chaîne de format fmt . Si présent, loc est utilisé pour le formatage spécifique à la locale.
Le comportement n'est pas défini si
std::
formatter
<
std::
remove_cvref_t
<
Ti
>
, CharT
>
ne satisfait pas aux exigences
BasicFormatter
pour tout
Ti
dans
Args
.
Table des matières |
Paramètres
| fmt | - |
un objet qui représente la chaîne de format. La chaîne de format est constituée de
Chaque champ de remplacement a le format suivant :
1)
champ de remplacement sans spécification de format
2)
champ de remplacement avec spécification de format
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | arguments à formater | ||||||||||||||||||||||||||||||||||||||||||||||
| loc | - | std::locale utilisé pour le formatage spécifique à la locale | ||||||||||||||||||||||||||||||||||||||||||||||
Valeur de retour
Le nombre total de caractères dans la chaîne formatée.
Exceptions
Propage toute exception levée par le formateur.
Exemple
#include <format> #include <iomanip> #include <iostream> #include <string_view> #include <vector> int main() { using namespace std::literals::string_view_literals; constexpr auto fmt_str{"Hubble's H{0} {1} {2:*^4} miles/sec/mpc."sv}; constexpr auto sub_zero{"\N{SUBSCRIPT ZERO}"sv}; // "₀" or {0342, 130, 128} constexpr auto aprox_equ{"\N{APPROXIMATELY EQUAL TO}"sv}; // "≅" or {0342, 137, 133} constexpr int Ho{42}; // H₀ const auto min_buffer_size{std::formatted_size(fmt_str, sub_zero, aprox_equ, Ho)}; std::cout << "Min buffer size = " << min_buffer_size << '\n'; // Use std::vector as dynamic buffer. The buffer does not include the trailing '\0'. std::vector<char> buffer(min_buffer_size); std::format_to_n(buffer.data(), buffer.size(), fmt_str, sub_zero, aprox_equ, Ho); std::cout << "Buffer: " << std::quoted(std::string_view{buffer.data(), min_buffer_size}) << '\n'; // Print the buffer directly after adding the trailing '\0'. buffer.push_back('\0'); std::cout << "Buffer: " << std::quoted(buffer.data()) << '\n'; }
Sortie :
Min buffer size = 37 Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc." Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement tel que publié | Comportement correct |
|---|---|---|---|
| P2216R3 | C++20 | lève std::format_error pour une chaîne de format invalide | une chaîne de format invalide génère une erreur à la compilation |
| P2418R2 | C++20 |
les objets qui ne sont ni const-utilisables ni copiables
(tels que les objets de type générateur) ne sont pas formatables |
permettre le formatage de ces objets |
| P2508R1 | C++20 | il n'y a pas de nom visible par l'utilisateur pour cette fonctionnalité |
le nom
basic_format_string
est exposé
|
Voir aussi
|
(C++20)
|
écrit la représentation formatée de ses arguments via un itérateur de sortie
(modèle de fonction) |
|
(C++20)
|
écrit la représentation formatée de ses arguments via un itérateur de sortie, sans dépasser la taille spécifiée
(modèle de fonction) |