C ++ setbuf () - Biblioteca standard C ++

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

Articole interesante...