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

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

setvbuf () прототип

 int setvbuf (ФАЙЛ * поток, символ * буфер, режим int, размер size_t);

setvbuf()Функция изменяет режим буферизации данного потока файлов к значению режима.

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

Это определено в заголовочном файле.

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

  • stream: файловый поток.
  • buffer: указатель на буфер, который будет использоваться потоком.
  • mode: режим буферизации. Типы режимов буферизации:
    • _IOFBF: полная буферизация
    • _IOLBF: буферизация строки
    • _IONBF: без буферизации
  • size: размер буфера в байтах.

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

Когда вы запустите программу, вывод будет:

… Это вторая строка Это первая строка Это вторая строка

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