C ++ setbuf () - standardní knihovna C ++

Funkce setbuf () v C ++ nastavuje vnitřní vyrovnávací paměť, která se má použít pro I / O operace proudem.

prototyp setbuf ()

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

Pokud vyrovnávací paměť nemá hodnotu null, je ekvivalentní volání setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Pokud má vyrovnávací paměť hodnotu null, je ekvivalentní volání setvbuf (stream, NULL, _IONBF, 0). V tomto případě je ukládání do vyrovnávací paměti vypnuto.

Je definován v hlavičkovém souboru.

setbuf () parametry

  • stream: Stream souborů.
  • buffer: Ukazatel na buffer, který může mít hodnotu null nebo ne. Pokud má hodnotu null, je ukládání do vyrovnávací paměti vypnuto, jinak by mělo mít alespoň BUFSIZ bajtů.

setbuf () Návratová hodnota

Žádný

Níže uvedené 2 příklady ilustrují použití funkce setbuf (). Oba tyto programy používají operaci se soubory. V prvním příkladu je vyrovnávací paměť nastavena pomocí setbuf () k internímu uložení obsahu souboru.

V dalším příkladu příkaz setbuf(fp, NULL)vypne ukládání do vyrovnávací paměti. Aby bylo možné číst obsah souboru, používá se fread ().

Příklad 1: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 Stream s mezipamětí

Příklad 2: funkce setbuf () s vypnutým ukládáním do vyrovnávací paměti

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

Když spustíte program, výstup bude:

 Stream bez vyrovnávací paměti

Zajímavé články...