std:: print
|
Definiert im Header
<print>
|
||
|
template
<
class
...
Args
>
void print ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (seit C++23) |
|
template
<
class
...
Args
>
void
print
(
std::
FILE
*
stream,
|
(2) | (seit C++23) |
Formatiere args gemäß der Formatzeichenkette fmt und gib das Ergebnis an einen Ausgabestrom aus.
? std:: vprint_unicode ( stream, fmt. str , std:: make_format_args ( args... ) )
: std :: vprint_unicode_buffered ( stream, fmt. str , std:: make_format_args ( args... ) ) ; .
? std:: vprint_nonunicode ( stream, fmt. str , std:: make_format_args ( args... ) )
: std :: vprint_nonunicode_buffered ( stream, fmt. str , std:: make_format_args ( args... ) ) ; .
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 | - |
Jedes Ersetzungsfeld hat folgendes Format:
1)
Ersetzungsfeld ohne Formatangabe
2)
Ersetzungsfeld mit Formatangabe
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | zu formatierende Argumente | ||||||||||||||||||||||||||||||||||||||||||||||
Exceptions
- std::bad_alloc bei Speicherzuweisungsfehlern.
- std::system_error , wenn das Schreiben in den Stream fehlschlägt.
- Leitet alle Ausnahmen weiter, die von verwendeten Formatters ausgelöst werden, z.B. std::format_error .
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | Formatierte Ausgabe |
202403L
|
(C++26)
(DR23) |
Ungepufferte formatierte Ausgabe | |
202406L
|
(C++26)
(DR23) |
Aktivierung ungepufferter formatierter Ausgabe für weitere formatierbare Typen | |
__cpp_lib_format
|
202207L
|
(C++23) | Verfügbarmachen von std::basic_format_string |
Beispiel
#include <cstdio> #include <filesystem> #include <print> int main() { std::print("{2} {1}{0}!\n", 23, "C++", "Hello"); // Überladung (1) const auto tmp{std::filesystem::temp_directory_path() / "test.txt"}; if (std::FILE* stream{std::fopen(tmp.c_str(), "w")}) { std::print(stream, "File: {}", tmp.string()); // Überladung (2) std::fclose(stream); } }
Ausgabe:
Hello C++23!
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| P3107R5 | C++23 | nur gepufferte Druckoperationen können durchgeführt werden | kann ungepufferte Druckoperationen durchführen |
| P3235R3 | C++23 | die Namen der durch P3107R5 hinzugefügten Funktionen waren irreführend | die Funktionsnamen wurden geändert |
Siehe auch
|
(C++23)
|
identisch mit
std::print
, außer dass jeder Ausdruck durch eine zusätzliche neue Zeile abgeschlossen wird
(Funktionsschablone) |
|
(C++23)
|
gibt eine
formatierte
Darstellung der Argumente aus
(Funktionsschablone) |
|
(C++20)
|
speichert die formatierte Darstellung der Argumente in einer neuen Zeichenkette
(Funktionsschablone) |
|
(C++20)
|
schreibt die formatierte Darstellung der Argumente über einen Ausgabeiterator
(Funktionsschablone) |
|
(C++11)
|
gibt formatierte Ausgabe an
stdout
, einen Dateistrom oder einen Puffer aus
(Funktion) |