std:: formatted_size
|
Definiert im Header
<format>
|
||
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (seit C++20) |
|
template
<
class
...
Args
>
std:: size_t formatted_size ( std:: wformat_string < Args... > fmt, Args && ... args ) ; |
(2) | (seit C++20) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(3) | (seit C++20) |
|
template
<
class
...
Args
>
std::
size_t
formatted_size
(
const
std::
locale
&
loc,
|
(4) | (seit C++20) |
Bestimmen Sie die Gesamtanzahl der Zeichen in der formatierten Zeichenkette, indem Sie args gemäß der Formatzeichenkette fmt formatieren. Falls vorhanden, wird loc für lokalisierungsspezifische Formatierung verwendet.
Das Verhalten ist undefiniert, falls
std::
formatter
<
std::
remove_cvref_t
<
Ti
>
, CharT
>
die
BasicFormatter
-Anforderungen für irgendein
Ti
in
Args
nicht erfüllt.
Inhaltsverzeichnis |
Parameter
| fmt | - |
ein Objekt, das die Formatzeichenkette repräsentiert. Die Formatzeichenkette besteht aus
Jedes Ersetzungsfeld hat folgendes Format:
1)
Ersetzungsfeld ohne Formatangabe
2)
Ersetzungsfeld mit Formatangabe
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | zu formatierende Argumente | ||||||||||||||||||||||||||||||||||||||||||||||
| loc | - | std::locale verwendet für lokalisierungsspezifische Formatierung | ||||||||||||||||||||||||||||||||||||||||||||||
Rückgabewert
Die Gesamtzahl der Zeichen in der formatierten Zeichenkette.
Exceptions
Leitet jede Ausnahme weiter, die vom Formatter ausgelöst wird.
Beispiel
#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'; }
Ausgabe:
Min buffer size = 37 Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc." Buffer: "Hubble's H₀ ≅ *42* miles/sec/mpc."
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| P2216R3 | C++20 | wirft std::format_error für ungültige Formatzeichenfolge | ungültige Formatzeichenfolge führt zu Compilezeitfehler |
| P2418R2 | C++20 |
Objekte, die weder const-verwendbar noch kopierbar sind
(wie Generator-ähnliche Objekte) sind nicht formatierbar |
Formatierung dieser Objekte erlauben |
| P2508R1 | C++20 | es gibt keinen für Benutzer sichtbaren Namen für diese Einrichtung |
der Name
basic_format_string
wird verfügbar gemacht
|
Siehe auch
|
(C++20)
|
Schreibt eine formatierte Darstellung seiner Argumente über einen Ausgabeiterator
(Funktions-Template) |
|
(C++20)
|
Schreibt eine formatierte Darstellung seiner Argumente über einen Ausgabeiterator, ohne eine bestimmte Größe zu überschreiten
(Funktions-Template) |