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

Функцията setbuf () в C ++ задава вътрешния буфер, който да се използва за I / O операции от поток.

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

 void setbuf (FILE * поток, char * буфер);

Ако буферът не е нулев, това е еквивалентно на извикване на setvbuf (поток, буфер, _IOFBF, BUFSIZ).

Ако буферът е нула, това е еквивалентно на извикване на setvbuf (stream, NULL, _IONBF, 0). В този случай буферирането е изключено.

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

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

  • поток: Файлов поток.
  • буфер: указател към буфер, който може да е нулев или не. Ако е нула, буферирането е изключено, в противен случай трябва да има поне 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; )

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

 Небуфериран поток

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