C ++ setbuf () - C ++ standardowa biblioteka

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ń

Interesujące artykuły...