std::println
| Definiert in 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, |
(2) | (seit C++23) |
void println(); |
(3) | (seit C++26) |
| void println( std::FILE* stream ); |
(4) | (seit C++26) |
Formatiert die Argumente args gemäß dem Format-String fmt mit angehängtem '\n' (was bedeutet, dass jede Ausgabe mit einer neuen Zeile endet) und gibt das Ergebnis in einen Stream aus.
|
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'), |
(seit C++26) |
Wenn std::formatter<Ti, char> die BasicFormatter-Anforderungen für irgendein Ti in Args (wie von std::make_format_args gefordert) nicht erfüllt, ist das Verhalten undefiniert.
Inhalt |
[edit] Parameter
| stream | - | Ausgabestream, in den geschrieben werden soll | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
Jedes Ersetzungsfeld hat das folgende Format:
1) Ersetzungsfeld ohne Formatangabe
2) Ersetzungsfeld mit Formatangabe
| ||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | zu formatierende Argumente | ||||||||||||||||||||||||||||||||||||||||||||||
[edit] Ausnahmen
- std::bad_alloc bei Zuweisungsfehler.
- std::system_error, wenn das Schreiben in den Stream fehlschlägt.
- Propagiert jede Ausnahme, die von verwendeten Formatierern ausgelöst wird, z. B. std::format_error.
[edit] Hinweise
Obwohl die Ü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 | Feature |
|---|---|---|---|
__cpp_lib_print |
202207L |
(C++23) | Formatierte Ausgabe |
202403L |
(C++26) | Ungepufferte formatierte Ausgabe[1] | |
__cpp_lib_format |
202207L |
(C++23) | Freigabe von std::basic_format_string |
- ↑ Obwohl P3107R5 als DR akzeptiert wird, ist std::runtime_format erst seit C++26 verfügbar. Folglich kann die Lösung in C++23 nicht angewendet werden.
[edit] Beispiel
#include <print> int main() { // Each call to std::println ends with new-line std::println("Please"); // overload (1) std::println("enter"); // (1) std::print("pass"); std::print("word"); std::println(); // (3); valid since C++26; same effect as std::print("\n"); }
Ausgabe
Please enter password
[edit] Siehe auch
| (C++23) |
druckt nach stdout oder einem Dateistream unter Verwendung der formatierten Darstellung der Argumente (Funktionstemplate) |
| (C++23) |
gibt die formatierten Darstellung der Argumente mit angehängtem '\n' aus (Funktions-Template) |
| (C++20) |
speichert die formatierte Darstellung der Argumente in einem neuen String (Funktionstemplate) |
| (C++11) |
druckt formatierte Ausgabe nach stdout, einen Dateistream oder einen Puffer (Funktion) |