C ++ setbuf () - Biblioteca C ++ Padrão

A função setbuf () em C ++ define o buffer interno a ser usado para operações de E / S por um fluxo.

protótipo setbuf ()

 void setbuf (FILE * stream, char * buffer);

Se o buffer não for nulo, é equivalente a chamar setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Se o buffer for nulo, é equivalente a chamar setvbuf (stream, NULL, _IONBF, 0). Nesse caso, o armazenamento em buffer é desativado.

É definido no arquivo de cabeçalho.

Parâmetros setbuf ()

  • stream: um stream de arquivo.
  • buffer: um ponteiro para um buffer que pode ser nulo ou não. Se for nulo, o buffer está desativado, caso contrário, deve ter pelo menos BUFSIZ bytes.

setbuf () Valor de retorno

Nenhum

Os 2 exemplos abaixo ilustram o uso da função setbuf (). Ambos os programas usam a operação de arquivo. No primeiro exemplo, o buffer é definido usando setbuf () para armazenar o conteúdo do arquivo internamente.

No próximo exemplo, a instrução setbuf(fp, NULL)desativa o armazenamento em buffer. Portanto, para ler o conteúdo do arquivo, fread () é usado.

Exemplo 1: como a função setbuf () funciona

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

Quando você executa o programa, a saída será:

 Buffered Stream

Exemplo 2: função setbuf () com buffer desativado

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

Quando você executa o programa, a saída será:

 Fluxo sem buffer

Artigos interessantes...