Namespaces
Variants

std:: basic_format_string, std:: format_string, std:: wformat_string

From cppreference.net
Definiert im Header <format>
template < class CharT, class ... Args >
struct basic_format_string ;
(1) (seit C++20)
template < class ... Args >

using format_string =

basic_format_string < char , std:: type_identity_t < Args > ... > ;
(2) (seit C++20)
template < class ... Args >

using wformat_string =

basic_format_string < wchar_t , std:: type_identity_t < Args > ... > ;
(3) (seit C++20)

Klassentemplate std::basic_format_string umschließt einen std::basic_string_view , der von Formatierungsfunktionen verwendet wird.

Der Konstruktor von std::basic_format_string führt Compile-Time-Formatstring-Prüfungen durch es sei denn, das Konstruktorargument wird zurückgegeben von std::runtime_format (seit C++26) .

Inhaltsverzeichnis

Memberfunktionen

(Konstruktor)
Konstruiert ein basic_format_string , löst einen Kompilierfehler aus, wenn das Argument kein Formatstring ist
(öffentliche Elementfunktion)
get
gibt den eingepackten String zurück
(öffentliche Elementfunktion)

std::basic_format_string:: basic_format_string

template < class T >
consteval basic_format_string ( const T & s ) ;
(1)
basic_format_string ( /* runtime-format-string */ < CharT > s ) noexcept ;
(2) (seit C++26)
1) Konstruiert ein basic_format_string -Objekt, das eine Ansicht der Zeichenkette s speichert. Falls das Argument keine Kompilierzeitkonstante ist oder nicht als Formatzeichenkette für die Formatierungsargumenttypen Args geparst werden kann, ist die Konstruktion fehlerhaft.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn const T & das Konzept std:: convertible_to < std:: basic_string_view < CharT >> modelliert.
2) Konstruiert ein basic_format_string -Objekt, das eine Ansicht der Zeichenkette s speichert, wie von std::runtime_format zurückgegeben. Es werden bei der Konstruktion keine Formatzeichenketten-Prüfungen durchgeführt.

Parameter

s - ein Objekt, das die Formatzeichenfolge repräsentiert. Die Formatzeichenfolge besteht aus
  • gewöhnlichen Zeichen (außer { und } ), die unverändert in die Ausgabe kopiert werden,
  • Escape-Sequenzen { { und } } , die in der Ausgabe durch { bzw. } ersetzt werden, und
  • Ersatzfeldern.

Jedes Ersatzfeld hat folgendes Format:

{ arg-id (optional) } (1)
{ arg-id (optional) : format-spec } (2)
1) Ersatzfeld ohne Formatangabe
2) Ersatzfeld mit Formatangabe
arg-id - gibt den Index des Arguments in args an, dessen Wert für die Formatierung verwendet werden soll; falls weggelassen, werden die Argumente in Reihenfolge verwendet.

Die arg-id s in einer Formatzeichenfolge müssen entweder alle angegeben oder alle weggelassen werden. Das Vermischen von manueller und automatischer Indizierung ist ein Fehler.

format-spec - die durch die std::formatter -Spezialisierung für das entsprechende Argument definierte Formatangabe. Darf nicht mit } beginnen.

(seit C++23)
(seit C++26)
  • Für andere formatierbare Typen wird die Formatangabe durch benutzerdefinierte formatter -Spezialisierungen bestimmt.

std::basic_format_string:: get

constexpr std:: basic_string_view < CharT > get ( ) const noexcept ;

Gibt die gespeicherte String-Ansicht zurück.

Hinweise

Die Alias-Templates format_string und wformat_string verwenden std::type_identity_t , um die Template-Argumentableitung zu unterdrücken. In der Regel, wenn sie als Funktionsparameter auftreten, werden ihre Template-Argumente von anderen Funktionsargumenten abgeleitet.

template<class... Args>
std::string format(std::format_string<Args...> fmt, Args&&... args);
auto s = format("{} {}", 1.0, 2);
// Ruft format<double, int> auf. Args werden von 1.0, 2 abgeleitet
// Aufgrund der Verwendung von type_identity_t in format_string berücksichtigt
// die Template-Argumentableitung nicht den Typ der Formatzeichenfolge.

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
P2508R1 C++20 es gibt keinen benutzersichtigen Namen für diese Einrichtung der Name basic_format_string wird verfügbar gemacht