Namensräume
Varianten
Aktionen

std::vformat

Von cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
Definiert in Header <format>
(1) (seit C++20)
(2) (seit C++20)
std::string vformat( const std::locale& loc,
                     std::string_view fmt, std::format_args args );
(3) (seit C++20)
std::wstring vformat( const std::locale& loc,
                      std::wstring_view fmt, std::wformat_args args );
(4) (seit C++20)

Formatiert die Argumente in args gemäß der Formatzeichenkette fmt und gibt das Ergebnis als Zeichenkette zurück. Falls vorhanden, wird loc für die gebietsschemaabhängige Formatierung verwendet.

Inhalt

[bearbeiten] Parameter

fmt - 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.
args - zu formatierende Argumente
loc - std::locale, die für die lokale-spezifische Formatierung verwendet wird.

[bearbeiten] Rückgabewert

Ein Zeichenkettenobjekt, das das formatierte Ergebnis enthält.

[bearbeiten] Ausnahmen

Wirft std::format_error, wenn fmt keine gültige Formatzeichenkette für die bereitgestellten Argumente ist, oder std::bad_alloc bei einem Speicherzuweisungsfehler. Propagiert auch jede Ausnahme, die von Formatierern oder Iteratoroperationen ausgelöst wird.

[bearbeiten] Beispiel

#include <format>
#include <iostream>
 
template<typename... Args>
inline void println(const std::format_string<Args...> fmt, Args&&... args)
{
    std::cout << std::vformat(fmt.get(), std::make_format_args(args...)) << '\n';
}
 
int main()
{
    println("{}{} {}{}", "Hello", ',', "C++", -1 + 2 * 3 * 4);
}

Ausgabe

Hello, C++23

[bearbeiten] Siehe auch