Setbuf () -funksjonen i C ++ angir den interne bufferen som skal brukes til I / O-operasjoner av en strøm.
setbuf () prototype
ugyldig setbuf (FIL * stream, char * buffer);
Hvis bufferen ikke er null, tilsvarer det å ringe til setvbuf (stream, buffer, _IOFBF, BUFSIZ).
Hvis bufferen er null, tilsvarer den å ringe til setvbuf (stream, NULL, _IONBF, 0). I dette tilfellet er buffringen slått av.
Det er definert i topptekstfilen.
setbuf () Parametere
- stream: En filstrøm.
- buffer: En peker til en buffer som kan være null eller ikke. Hvis den er null, er buffering slått av, ellers bør den ha minst BUFSIZ-byte.
setbuf () Returverdi
Ingen
De to eksemplene nedenfor illustrerer bruken av setbuf () -funksjonen. Begge disse programmene bruker filoperasjon. I det første eksemplet settes buffer ved hjelp av setbuf () for å lagre innholdet i filen internt.
I det neste eksemplet setbuf(fp, NULL)
slår uttalelsen buffering av. Så for å lese filinnholdet brukes fread ().
Eksempel 1: Hvordan setbuf () -funksjonen fungerer
#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 kjører programmet, vil utdataene være:
Buffered Stream
Eksempel 2: funksjonen setbuf () med buffering slått av
#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 kjører programmet, vil utdataene være:
Ubuffert strøm