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