C ++ setbuf () - C ++ Standardbibliothek

Die Funktion setbuf () in C ++ legt den internen Puffer fest, der für E / A-Operationen von einem Stream verwendet werden soll.

setbuf () Prototyp

 void setbuf (FILE * stream, char * buffer);

Wenn der Puffer nicht null ist, entspricht dies dem Aufruf von setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Wenn der Puffer null ist, entspricht dies dem Aufruf von setvbuf (stream, NULL, _IONBF, 0). In diesem Fall ist die Pufferung ausgeschaltet.

Es ist in der Header-Datei definiert.

setbuf () Parameter

  • Stream: Ein Dateistream.
  • buffer: Ein Zeiger auf einen Puffer, der null sein kann oder nicht. Wenn es null ist, ist die Pufferung deaktiviert, andernfalls sollte es mindestens BUFSIZ-Bytes enthalten.

setbuf () Rückgabewert

Keiner

Die folgenden 2 Beispiele veranschaulichen die Verwendung der Funktion setbuf (). Beide Programme verwenden den Dateibetrieb. Im ersten Beispiel wird der Puffer mit setbuf () festgelegt, um den Inhalt der Datei intern zu speichern.

Im nächsten Beispiel setbuf(fp, NULL)deaktiviert die Anweisung die Pufferung. Um den Inhalt der Datei zu lesen, wird fread () verwendet.

Beispiel 1: Funktionsweise der Funktion 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; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Gepufferter Stream

Beispiel 2: Funktion setbuf () mit deaktivierter Pufferung

 #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; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Ungepufferter Stream

Interessante Beiträge...