C ++ setbuf () - Biblioteca estándar de C ++

La función setbuf () en C ++ establece el búfer interno que un flujo utilizará para las operaciones de E / S.

prototipo setbuf ()

 void setbuf (ARCHIVO * flujo, char * búfer);

Si el búfer no es nulo, equivale a llamar a setvbuf (stream, búfer, _IOFBF, BUFSIZ).

Si el búfer es nulo, equivale a llamar a setvbuf (stream, NULL, _IONBF, 0). En este caso, el almacenamiento en búfer está desactivado.

Está definido en el archivo de encabezado.

Parámetros de setbuf ()

  • secuencia: una secuencia de archivo.
  • búfer: puntero a un búfer que puede ser nulo o no. Si es nulo, el almacenamiento en búfer está desactivado; de lo contrario, debería tener al menos BUFSIZ bytes.

setbuf () Valor de retorno

Ninguna

Los siguientes 2 ejemplos ilustran el uso de la función setbuf (). Ambos programas utilizan la operación de archivos. En el primer ejemplo, el búfer se configura usando setbuf () para almacenar el contenido del archivo internamente.

En el siguiente ejemplo, la declaración setbuf(fp, NULL)desactiva el almacenamiento en búfer. Entonces, para leer el contenido del archivo, se usa fread ().

Ejemplo 1: Cómo funciona la función 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; )

Cuando ejecute el programa, la salida será:

 Secuencia almacenada en búfer

Ejemplo 2: función setbuf () con búfer desactivado

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

Cuando ejecute el programa, la salida será:

 Secuencia sin búfer

Articulos interesantes...