Funcția setbuf () din C ++ setează buffer-ul intern pentru a fi utilizat pentru operațiile I / O de către un flux.
setbuf () prototip
void setbuf (FILE * stream, char * buffer);
Dacă bufferul nu este nul, este echivalent cu apelarea setvbuf (flux, buffer, _IOFBF, BUFSIZ).
Dacă bufferul este nul, este echivalent cu apelarea setvbuf (stream, NULL, _IONBF, 0). În acest caz, tamponarea este dezactivată.
Este definit în fișierul antet.
setbuf () Parametri
- stream: Un flux de fișiere.
- buffer: un indicator către un buffer care poate fi nul sau nu. Dacă este nul, buffering-ul este dezactivat, altfel ar trebui să aibă cel puțin BUFSIZ octeți.
setbuf () Valoare returnată
Nici unul
Cele 2 exemple de mai jos ilustrează utilizarea funcției setbuf (). Ambele programe utilizează funcționarea fișierelor. În primul exemplu, bufferul este setat folosind setbuf () pentru a stoca conținutul fișierului intern.
În exemplul următor, instrucțiunea setbuf(fp, NULL)
dezactivează tamponarea. Deci, pentru a citi conținutul fișierului, se folosește fread ().
Exemplul 1: Cum funcționează funcția 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; )
Când rulați programul, ieșirea va fi:
Flux tamponat
Exemplul 2: funcția setbuf () cu tamponarea dezactivată
#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; )
Când rulați programul, ieșirea va fi:
Flux fără tampon