C ++ setbuf () - C ++ Standardbibliotek

Setbuf () -funktionen i C ++ indstiller den interne buffer, der skal bruges til I / O-operationer af en strøm.

setbuf () prototype

 ugyldig setbuf (FIL * stream, char * buffer);

Hvis bufferen ikke er nul, svarer den til at kalde setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Hvis bufferen er nul, svarer det til at kalde setvbuf (stream, NULL, _IONBF, 0). I dette tilfælde er buffringen slået fra.

Det er defineret i header-fil.

setbuf () Parametre

  • stream: En filstream.
  • buffer: En markør til en buffer, der kan være nul eller ej. Hvis den er nul, er buffering slået fra, ellers skal den mindst have BUFSIZ-byte.

setbuf () Returværdi

Ingen

De nedenstående 2 eksempler illustrerer brugen af ​​setbuf () -funktionen. Begge disse programmer bruger filhandling. I det første eksempel indstilles buffer ved hjælp af setbuf () til at gemme indholdet af filen internt.

I det næste eksempel setbuf(fp, NULL)slukker udsagnet buffering. Så for at læse filindholdet bruges fread ().

Eksempel 1: Sådan fungerer setbuf () -funktionen

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

Når du kører programmet, vil output være:

 Bufferstrøm

Eksempel 2: setbuf () -funktion med buffering slået fra

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

Når du kører programmet, vil output være:

 Ubufferet strøm

Interessante artikler...