Funkcja setvbuf () w C ++ służy do zmiany lub określenia trybu buforowania i rozmiaru bufora.
setvbuf () prototyp
int setvbuf (PLIK * strumień, znak * bufor, tryb int, rozmiar_t rozmiar);
setvbuf()
Funkcja zmienia tryb buforowania danego strumienia pliku do wartości trybu.
Jeśli bufor nie ma wartości null, rozmiar buforu jest równy rozmiarowi, w przeciwnym razie funkcja automatycznie przydziela bufor (na podstawie wartości rozmiaru).
Jest zdefiniowany w pliku nagłówkowym.
setvbuf () Parametry
- stream: strumień plików.
- bufor: wskaźnik do bufora, który ma być używany przez strumień.
- tryb: tryb buforowania. Typy trybów buforowania to:
- _IOFBF: pełne buforowanie
- _IOLBF: buforowanie linii
- _IONBF: bez buforowania
- size: rozmiar bufora w bajtach.
setvbuf () Zwracana wartość
Te setvbuf()
powroty zerowania na sukces i niezerowego na niepowodzenie.
Przykład: Jak działa funkcja setvbuf ()
#include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )
Po uruchomieniu programu wynik będzie następujący:
… To jest druga linia To jest pierwsza linia To jest druga linia