std:: setbuf
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im Header
<cstdio>
|
||
|
void
setbuf
(
std::
FILE
*
stream,
char
*
buffer
)
;
|
||
Legt den internen Puffer fest, der für I/O-Operationen verwendet wird, die auf dem C-Stream stream durchgeführt werden.
Wenn buffer nicht null ist, entspricht dies std:: setvbuf ( stream, buffer, _IOFBF , BUFSIZ ) .
Wenn buffer null ist, entspricht dies std:: setvbuf ( stream, nullptr, _IONBF , 0 ) , was die Pufferung deaktiviert.
Inhaltsverzeichnis |
Parameter
| stream | - | der Dateistream, auf den der Puffer gesetzt werden soll |
| buffer | - |
Zeiger auf einen Puffer, den der Stream verwenden soll. Wenn ein Nullzeiger übergeben wird, wird die Pufferung deaktiviert. Wenn nicht null, muss er mindestens
BUFSIZ
Zeichen aufnehmen können
|
Rückgabewert
(keine)
Hinweise
Wenn BUFSIZ nicht die geeignete Puffergröße ist, kann std::setvbuf verwendet werden, um sie zu ändern.
std::setvbuf
sollte ebenfalls zur Fehlererkennung verwendet werden, da
std::setbuf
keinen Erfolg oder Misserfolg anzeigt.
Diese Funktion darf nur verwendet werden, nachdem
stream
einer geöffneten Datei zugeordnet wurde, jedoch vor jedem anderen Vorgang (außer einem fehlgeschlagenen Aufruf von
std::setbuf
/
std::setvbuf
).
Ein häufiger Fehler ist das Setzen des Puffers von stdin oder stdout auf ein Array, dessen Lebensdauer vor dem Programmende abläuft:
int main() { char buf[BUFSIZ]; std::setbuf(stdin, buf); } // Lebensdauer von buf endet, undefiniertes Verhalten
Beispiel
std::setbuf
kann verwendet werden, um die Pufferung auf Streams zu deaktivieren, die sofortige Ausgabe erfordern.
#include <chrono> #include <cstdio> #include <thread> int main() { using namespace std::chrono_literals; std::setbuf(stdout, nullptr); // unbuffered stdout std::putchar('a'); // appears immediately on unbuffered stream std::this_thread::sleep_for(1s); std::putchar('b'); }
Ausgabe:
ab
Siehe auch
|
legt den Puffer und seine Größe für einen Dateistrom fest
(Funktion) |
|
|
C-Dokumentation
für
setbuf
|
|