Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
Definiert in 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)

Die Klassenschablone std::basic_format_string umschließt eine std::basic_string_view, die von Formatierungsfunktionen verwendet wird.

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

Inhalt

[edit] Member functions

(Konstruktor)
konstruiert einen basic_format_string, löst bei nicht-format-String-Argument einen Kompilierungsfehler aus
(öffentliche Memberfunktion)
get
gibt den umschlossenen String zurück
(öffentliche Memberfunktion)

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 des Strings s speichert. Wenn das Argument keine zur Kompilierungszeit konstante ist oder wenn es nicht als Format-String für die Formatierungsargumenttypen Args geparst werden kann, ist die Konstruktion fehlerhaft.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn const T& std::convertible_to<std::basic_string_view<CharT>> modelliert.
2) Konstruiert ein basic_format_string-Objekt, das eine Ansicht des Strings s speichert, wie von std::runtime_format zurückgegeben. Es führt keine Format-String-Prüfungen bei der Konstruktion durch.

Parameter

s - ein Objekt, das den Formatstring repräsentiert. Der Formatstring besteht aus
  • regulären Zeichen (außer { und }), die unverändert in die Ausgabe kopiert werden,
  • Escape-Sequenzen {{ und }}, die in der Ausgabe durch { und } ersetzt werden, und
  • Ersetzungsfeldern.

Jedes Ersetzungsfeld hat das folgende Format:

{ arg-id (optional) } (1)
{ arg-id (optional) : format-spec } (2)
1) Ersetzungsfeld ohne Formatangabe
2) Ersetzungsfeld mit Formatangabe
arg-id - gibt den Index des Arguments in `args` an, dessen Wert zur Formatierung verwendet werden soll; wenn er weggelassen wird, werden die Argumente in der Reihenfolge verwendet.

Die `arg-id`s in einem Formatstring müssen entweder alle vorhanden sein oder alle weggelassen werden. Das Mischen von manueller und automatischer Indizierung ist ein Fehler.

format-spec - die Formatangabe, die durch die std::formatter-Spezialisierung für das entsprechende Argument definiert ist. Kann nicht mit } beginnen.

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

std::basic_format_string::get

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

Gibt die gespeicherte String-Ansicht zurück.

[edit] Hinweise

Die Alias-Schablonen format_string und wformat_string verwenden std::type_identity_t, um die Schablonenargumentableitung zu verhindern. Typischerweise werden, wenn sie als Funktionsparameter auftreten, ihre Schablonenargumente aus anderen Funktionsargumenten abgeleitet.

template<class... Args>
std::string format(std::format_string<Args...> fmt, Args&&... args);
 
auto s = format("{} {}", 1.0, 2);
// Calls format<double, int>. Args are deduced from 1.0, 2
// Due to the use of type_identity_t in format_string, template argument deduction
// does not consider the type of the format string.

[edit] Beispiel

[edit] Defect reports

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 benutzerseitig sichtbaren Namen für diese Einrichtung Der Name basic_format_string wird verfügbar gemacht