Funkcja setbuf () w C ++ ustawia wewnętrzny bufor, który ma być używany do operacji we / wy przez strumień.
setbuf () prototyp
void setbuf (PLIK * strumień, znak * bufor);
Jeśli bufor nie ma wartości null, jest to równoważne wywołaniu setvbuf (stream, buffer, _IOFBF, BUFSIZ).
Jeśli bufor ma wartość null, jest to równoważne wywołaniu setvbuf (stream, NULL, _IONBF, 0). W takim przypadku buforowanie jest wyłączone.
Jest zdefiniowany w pliku nagłówkowym.
setbuf () Parametry
- stream: strumień plików.
- bufor: wskaźnik do bufora, który może mieć wartość null lub nie. Jeśli jest null, buforowanie jest wyłączone, w przeciwnym razie powinno mieć co najmniej BUFSIZ bajtów.
setbuf () Zwracana wartość
Żaden
Poniższe dwa przykłady ilustrują użycie funkcji setbuf (). Oba te programy używają operacji na plikach. W pierwszym przykładzie bufor jest ustawiany za pomocą setbuf () do wewnętrznego przechowywania zawartości pliku.
W następnym przykładzie instrukcja setbuf(fp, NULL)
wyłącza buforowanie. Aby odczytać zawartość pliku, używana jest funkcja fread ().
Przykład 1: Jak działa funkcja setbuf ()
#include #include using namespace std; int main () ( char str() = "Buffered Stream"; char buffer(BUFSIZ); FILE *fp; fp=fopen ("test.txt","wb"); setbuf(fp,buffer); fwrite(str, sizeof(str), 1, fp); fflush(fp); fclose(fp); cout << buffer; return 0; )
Po uruchomieniu programu wynik będzie następujący:
Buforowany strumień
Przykład 2: funkcja setbuf () z wyłączonym buforowaniem
#include #include using namespace std; int main () ( char str() = "Unbuffered Stream"; char strFromFile(20); FILE *fp; fp=fopen ("test.txt","wb+"); setbuf(fp,NULL); fwrite(str, sizeof(str), 1, fp); fflush(fp); /* We need to rewind the file pointer and read the file because the data from test.txt isn't saved in any buffer */ rewind(fp); fread(strFromFile, sizeof(strFromFile), 1, fp); fclose(fp); cout << strFromFile; return 0; )
Po uruchomieniu programu wynik będzie następujący:
Niebuforowany strumień