Функция 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; )
Когда вы запустите программу, вывод будет:
… Это вторая строка Это первая строка Это вторая строка