Namespaces
Variants

std:: vformat

From cppreference.net
Definiert in Header <format>
(1) (seit C++20)
(2) (seit C++20)
(3) (seit C++20)
(4) (seit C++20)

Formatieren Sie die in args enthaltenen Argumente gemäß der Formatzeichenkette fmt und geben Sie das Ergebnis als String zurück. Falls vorhanden, wird loc für lokalisierungsabhängige Formatierung verwendet.

Inhaltsverzeichnis

Parameter

fmt - ein Objekt, das die Formatzeichenkette repräsentiert. Die Formatzeichenkette 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
  • Ersetzungsfeldern.

Jedes Ersetzungsfeld hat folgendes 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 für die Formatierung verwendet wird; falls weggelassen, werden die Argumente in Reihenfolge verwendet.

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

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

(since C++23)
(since C++26)
  • Für andere formatierbare Typen wird die Formatangabe durch benutzerdefinierte formatter -Spezialisierungen bestimmt.
args - zu formatierende Argumente
loc - std::locale für lokalisierungsspezifische Formatierung

Rückgabewert

Ein String-Objekt, das das formatierte Ergebnis enthält.

Exceptions

Wirft std::format_error falls fmt keine gültige Formatzeichenkette für die bereitgestellten Argumente ist, oder std::bad_alloc bei Speicherallokierungsfehlern. Leitet auch alle Ausnahmen weiter, die von Formatierer- oder Iterator-Operationen ausgelöst werden.

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

Siehe auch