C ++ setbuf () - C ++ - vakiokirjasto

C ++: n setbuf () -toiminto asettaa sisäisen puskurin, jota virta käyttää I / O-operaatioihin.

setbuf () -prototyyppi

 void setbuf (FILE * virta, char * puskuri);

Jos puskuri ei ole nolla, se vastaa setvbuf-kutsua (virta, puskuri, _IOFBF, BUFSIZ).

Jos puskuri on tyhjä, se vastaa setvbuf (stream, NULL, _IONBF, 0) kutsumista. Tällöin puskurointi poistetaan käytöstä.

Se määritetään otsikkotiedostossa.

setbuf () -parametrit

  • stream: Tiedostovirta.
  • puskuri: Osoitin puskuriin, joka voi olla tyhjä tai ei. Jos se on nolla, puskurointi poistetaan käytöstä, muuten sen pitäisi olla vähintään BUFSIZ-tavua.

setbuf () Palautusarvo

Ei mitään

Alla olevat 2 esimerkkiä kuvaavat setbuf () -funktion käyttöä. Molemmat näistä ohjelmista käyttävät tiedostojen käyttöä. Ensimmäisessä esimerkissä puskuri asetetaan käyttämällä setbuf () -toimintoa tiedoston sisällön tallentamiseksi sisäisesti.

Seuraavassa esimerkissä lause setbuf(fp, NULL)poistaa puskuroinnin käytöstä. Joten tiedoston sisällön lukemiseen käytetään fread ().

Esimerkki 1: Kuinka setbuf () -toiminto toimii

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

Kun suoritat ohjelmaa, tulos on:

 Puskuroitu virta

Esimerkki 2: setbuf () -toiminto puskuroinnin ollessa pois päältä

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

Kun suoritat ohjelmaa, tulos on:

 Purkamaton stream

Mielenkiintoisia artikkeleita...