C ++ setvbuf () - C ++ стандартна библиотека

Функцията setvbuf () в C ++ се използва за промяна или задаване на режим на буфериране и размер на буфера.

прототип на setvbuf ()

 int setvbuf (FILE * поток, char * буфер, int режим, size_t размер);

Най setvbuf()функция сменя режима на буфериране на даден файл поток към стойността на готовност.

Ако буферът не е нула, размерът на буфера е размер, в противен случай функцията автоматично разпределя буфер (въз основа на стойността на размера).

Той се определя в заглавния файл.

setvbuf () Параметри

  • поток: Файлов поток.
  • буфер: указател към буфера, който ще се използва от потока.
  • режим: Буферен режим. Видовете буферни режими са:
    • _IOFBF: пълно буфериране
    • _IOLBF: буфериране на редове
    • _IONBF: няма буфериране
  • размер: Размерът на буфера в байтове.

setvbuf () Върната стойност

На setvbuf()връща функция нула за успех и различна от нула при неуспех.

Пример: Как работи функцията 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; )

Когато стартирате програмата, изходът ще бъде:

… Това е втори ред Това е първи ред Това е втори ред

Интересни статии...