C ++ setvbuf () - Biblioteca C ++ padrão

A função setvbuf () em C ++ é usada para alterar ou especificar o modo de armazenamento em buffer e o tamanho do buffer.

protótipo setvbuf ()

 int setvbuf (FILE * stream, char * buffer, modo int, size_t size);

A setvbuf()função altera o modo de buffer de um determinado fluxo de arquivo para o valor de modo.

Se o buffer não for nulo, o tamanho do buffer é size, caso contrário, a função aloca automaticamente um buffer (com base no valor do tamanho).

É definido no arquivo de cabeçalho.

Parâmetros setvbuf ()

  • stream: um stream de arquivo.
  • buffer: Ponteiro para o buffer a ser usado pelo stream.
  • modo: modo de buffer. Os tipos de modos de buffer são:
    • _IOFBF: buffer completo
    • _IOLBF: buffer de linha
    • _IONBF: sem buffer
  • size: o tamanho do buffer em bytes.

setvbuf () Valor de retorno

A setvbuf()função retorna zero em caso de sucesso e diferente de zero em caso de falha.

Exemplo: como a função setvbuf () funciona

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

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

… Esta é a segunda linha Esta é a primeira linha Esta é a segunda linha

Artigos interessantes...