Namespaces
Variants

std:: println

From cppreference.net
< cpp ‎ | io
Definiert im Header <print>
template < class ... Args >
void println ( std:: format_string < Args... > fmt, Args && ... args ) ;
(1) (seit C++23)
template < class ... Args >

void println ( std:: FILE * stream,

std:: format_string < Args... > fmt, Args && ... args ) ;
(2) (seit C++23)
void println ( ) ;
(3) (seit C++26)
void println ( std:: FILE * stream ) ;
(4) (seit C++26)

Formatiere args gemäß der Formatzeichenkette fmt mit angehängtem ' \n ' (was bedeutet, dass jede Ausgabe mit einer neuen Zeile endet), und gib das Ergebnis an einen Stream aus.

1) Entspricht std :: println ( stdout , fmt, std:: forward < Args > ( args ) ... ) .
2) Entspricht der Ausführung der folgenden Operationen:

std:: print ( stream, "{} \n " , std:: format ( fmt, std:: forward < Args > ( args ) ... ) ) ;

(bis C++26)

std:: print ( stream, std:: runtime_format ( std:: string ( fmt. get ( ) ) + ' \n ' ) ,
std:: forward < Args > ( args ) ... )

(seit C++26)
3) Entspricht std :: println ( stdout ) .
4) Entspricht std:: print ( stream, " \n " ) .

Wenn std:: formatter < Ti, char > die BasicFormatter -Anforderungen für irgendein Ti in Args nicht erfüllt (wie von std::make_format_args benötigt), ist das Verhalten undefiniert.

Inhaltsverzeichnis

Parameter

stream - Ausgabedateistream, in den geschrieben wird
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 ausgelassen, werden die Argumente in Reihenfolge verwendet.

Die arg-id s in einer Formatzeichenkette müssen entweder alle angegeben oder alle ausgelassen 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

Ausnahmen

Hinweise

Obwohl Überladungen ( 3,4 ) in C++26 hinzugefügt werden, stellen alle bekannten Implementierungen sie bereits im C++23-Modus zur Verfügung.

Feature-Test Makro Wert Std Funktion
__cpp_lib_print 202207L (C++23) Formatierte Ausgabe
202403L (C++26) Ungepufferte formatierte Ausgabe [1]
__cpp_lib_format 202207L (C++23) Verfügbarmachen von std::basic_format_string
  1. Obwohl P3107R5 als DR akzeptiert wurde, std::runtime_format ist erst ab C++26 verfügbar. Daher kann die Lösung nicht in C++23 angewendet werden.

Beispiel

#include <print>
int main()
{
    // Jeder Aufruf von std::println endet mit einem Zeilenumbruch
    std::println("Please"); // Überladung (1)
    std::println("enter"); // (1)
    std::print("pass");
    std::print("word");
    std::println(); // (3); gültig seit C++26; gleiche Wirkung wie std::print("\n"); 
}

Ausgabe:

Please
enter
password

Siehe auch

(C++23)
gibt formatiert an stdout oder einen Dateistrom aus
(Funktions-Template)
gibt formatierte Darstellung der Argumente mit angehängtem ' \n ' aus
(Funktions-Template)
(C++20)
speichert formatierte Darstellung der Argumente in einem neuen String
(Funktions-Template)
gibt formatierte Ausgabe an stdout , einen Dateistrom oder einen Puffer aus
(Funktion)