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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<cstdio>
|
||
|
void
setbuf
(
std::
FILE
*
stream,
char
*
buffer
)
;
|
||
Définit le tampon interne à utiliser pour les opérations d'E/S effectuées sur le flux C stream .
Si buffer n'est pas nul, équivalent à std:: setvbuf ( stream, buffer, _IOFBF , BUFSIZ ) .
Si buffer est nul, équivalent à std:: setvbuf ( stream, nullptr, _IONBF , 0 ) , ce qui désactive la mise en mémoire tampon.
Table des matières |
Paramètres
| stream | - | le flux de fichier auquel définir le tampon |
| buffer | - |
pointeur vers un tampon pour le flux à utiliser. Si un pointeur nul est fourni, la mise en tampon est désactivée. S'il n'est pas nul, doit pouvoir contenir au moins
BUFSIZ
caractères
|
Valeur de retour
(aucun)
Notes
Si BUFSIZ n'est pas la taille de tampon appropriée, std::setvbuf peut être utilisé pour la modifier.
std::setvbuf
devrait également être utilisé pour détecter les erreurs, car
std::setbuf
n'indique pas le succès ou l'échec.
Cette fonction ne peut être utilisée qu'après que
stream
ait été associé à un fichier ouvert, mais avant toute autre opération (à l'exception d'un appel échoué à
std::setbuf
/
std::setvbuf
).
Une erreur courante consiste à définir le tampon de stdin ou stdout sur un tableau dont la durée de vie se termine avant la fin du programme :
int main() { char buf[BUFSIZ]; std::setbuf(stdin, buf); } // durée de vie de buf se termine, comportement indéfini
Exemple
std::setbuf
peut être utilisé pour désactiver la mise en mémoire tampon sur les flux nécessitant une sortie immédiate.
#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'); }
Sortie :
ab
Voir aussi
|
définit le tampon et sa taille pour un flux de fichier
(fonction) |
|
|
Documentation C
pour
setbuf
|
|