C ++ setbuf () - C ++ standaardbibliotheek

De functie setbuf () in C ++ stelt de interne buffer in die moet worden gebruikt voor I / O-bewerkingen door een stream.

setbuf () prototype

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

Als de buffer niet nul is, is het equivalent aan het aanroepen van setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Als de buffer null is, is het equivalent aan het aanroepen van setvbuf (stream, NULL, _IONBF, 0). In dit geval is de buffering uitgeschakeld.

Het wordt gedefinieerd in het header-bestand.

setbuf () Parameters

  • stream: een bestandsstream.
  • buffer: een pointer naar een buffer die al dan niet null kan zijn. Als het nul is, is buffering uitgeschakeld, anders zou het minimaal BUFSIZ bytes moeten hebben.

setbuf () Retourwaarde

Geen

De onderstaande 2 voorbeelden illustreren het gebruik van de functie setbuf (). Beide programma's gebruiken bestandsbewerkingen. In het eerste voorbeeld wordt buffer ingesteld met behulp van de setbuf () om de inhoud van het bestand intern op te slaan.

In het volgende voorbeeld setbuf(fp, NULL)schakelt de instructie buffering uit. Dus om de inhoud van het bestand te lezen, wordt fread () gebruikt.

Voorbeeld 1: hoe de functie setbuf () werkt

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

Wanneer u het programma uitvoert, is de uitvoer:

 Gebufferde stroom

Voorbeeld 2: setbuf () functie met buffer uitgeschakeld

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

Wanneer u het programma uitvoert, is de uitvoer:

 Niet-gebufferde stroom

Interessante artikelen...