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

Функция setbuf () в C ++ устанавливает внутренний буфер, который будет использоваться потоком для операций ввода-вывода.

setbuf () прототип

 void setbuf (ФАЙЛ * поток, символ * буфер);

Если буфер не равен нулю, это эквивалентно вызову setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Если буфер равен нулю, это эквивалентно вызову setvbuf (stream, NULL, _IONBF, 0). В этом случае буферизация отключена.

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

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

  • stream: файловый поток.
  • buffer: указатель на буфер, который может быть нулевым или нет. Если он равен нулю, буферизация отключена, в противном случае она должна иметь размер не менее BUFSIZ байтов.

setbuf () Возвращаемое значение

Никто

Приведенные ниже 2 примера иллюстрируют использование функции setbuf (). Обе эти программы используют файловые операции. В первом примере буфер устанавливается с помощью setbuf () для внутреннего хранения содержимого файла.

В следующем примере инструкция setbuf(fp, NULL)отключает буферизацию. Поэтому для чтения содержимого файла используется fread ().

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

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

 Буферизованный поток

Пример 2: функция setbuf () с отключенной буферизацией

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

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

 Небуферизованный поток

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