C ++ setbuf () - štandardná knižnica C ++

Funkcia setbuf () v C ++ nastavuje internú vyrovnávaciu pamäť, ktorá sa má použiť na I / O operácie prúdom.

prototyp setbuf ()

 void setbuf (FILE * stream, char * buffer);

Ak vyrovnávacia pamäť nemá hodnotu null, je to ekvivalent volania setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Ak je vyrovnávacia pamäť nulová, je to ekvivalent volania setvbuf (stream, NULL, _IONBF, 0). V takom prípade je ukladanie do vyrovnávacej pamäte vypnuté.

Je definované v hlavičkovom súbore.

setbuf () parametre

  • stream: stream súborov.
  • buffer: Ukazovateľ na buffer, ktorý môže byť nulový alebo nie. Ak má hodnotu null, ukladanie do vyrovnávacej pamäte je vypnuté, inak by malo mať aspoň BUFSIZ bajtov.

setbuf () Vrátená hodnota

Žiadne

Nasledujúce 2 príklady ilustrujú použitie funkcie setbuf (). Oba tieto programy používajú prácu so súbormi. V prvom príklade je vyrovnávacia pamäť nastavená pomocou setbuf () na interné uloženie obsahu súboru.

V nasledujúcom príklade príkaz setbuf(fp, NULL)vypne ukladanie do vyrovnávacej pamäte. Na čítanie obsahu súboru sa teda používa fread ().

Príklad 1: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Stream s medzipamäťou

Príklad 2: funkcia setbuf () s vypnutým ukladaním do vyrovnávacej pamäte

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

Po spustení programu bude výstup:

 Stream bez vyrovnávacej pamäte

Zaujímavé články...