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

Funkce setvbuf () v C ++ se používá ke změně nebo určení režimu ukládání do vyrovnávací paměti a velikosti vyrovnávací paměti.

prototyp setvbuf ()

 int setvbuf (FILE * stream, char * buffer, int režim, size_t size);

setvbuf()Funkce změní režim ukládání do vyrovnávací paměti daného streamu souboru na hodnotu režimu.

Pokud vyrovnávací paměť není null, velikost vyrovnávací paměti je velikost, jinak funkce automaticky přidělí vyrovnávací paměť (na základě hodnoty velikosti).

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

setvbuf () parametry

  • stream: Stream souborů.
  • buffer: Ukazatel na buffer, který má být použit streamem.
  • režim: Režim ukládání do vyrovnávací paměti. Typy režimů ukládání do vyrovnávací paměti jsou:
    • _IOFBF: plné ukládání do vyrovnávací paměti
    • _IOLBF: ukládání do vyrovnávací paměti linky
    • _IONBF: žádné ukládání do vyrovnávací paměti
  • size: Velikost bufferu v bajtech.

setvbuf () Návratová hodnota

Tyto setvbuf()funkce vrátí nulu při úspěchu a nenulová při selhání.

Příklad: Jak funguje funkce setvbuf ()

 #include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )

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

… Toto je druhý řádek Toto je první řádek Toto je druhý řádek

Zajímavé články...