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

La función setvbuf () en C ++ se usa para cambiar o especificar el modo de almacenamiento en búfer y el tamaño del búfer.

prototipo setvbuf ()

 int setvbuf (ARCHIVO * flujo, char * búfer, modo int, tamaño_t tamaño);

La setvbuf()función cambia el modo de almacenamiento en búfer del flujo de archivo dado al valor de modo.

Si el búfer no es nulo, el tamaño del búfer es tamaño; de lo contrario, la función asigna automáticamente un búfer (según el valor del tamaño).

Está definido en el archivo de encabezado.

Parámetros de setvbuf ()

  • secuencia: una secuencia de archivo.
  • búfer: puntero al búfer que utilizará la secuencia.
  • modo: modo de almacenamiento en búfer. Los tipos de modos de almacenamiento en búfer son:
    • _IOFBF: almacenamiento en búfer completo
    • _IOLBF: búfer de línea
    • _IONBF: sin almacenamiento en búfer
  • tamaño: el tamaño del búfer en bytes.

setvbuf () Valor de retorno

La setvbuf()función devuelve cero en caso de éxito y distinto de cero en caso de error.

Ejemplo: cómo funciona la función setvbuf ()

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

Cuando ejecute el programa, la salida será:

… Esta es la segunda línea Esta es la primera línea Esta es la segunda línea

Articulos interesantes...