C ++ setbuf () - C ++ standarta bibliotēka

C ++ funkcija setbuf () nosaka iekšējo buferi, kas straumei jāizmanto I / O operācijām.

setbuf () prototips

 void setbuf (FILE * straume, char * buferis);

Ja buferis nav nulle, tas ir ekvivalents setvbuf izsaukšanai (straume, buferis, _IOFBF, BUFSIZ).

Ja buferis nav derīgs, tas ir līdzvērtīgs setvbuf izsaukšanai (straume, NULL, _IONBF, 0). Šajā gadījumā buferizācija ir izslēgta.

Tas ir definēts galvenes failā.

setbuf () parametri

  • straume: failu straume.
  • buferis: Norāde uz buferi, kas var būt nulle vai nē. Ja tas ir nulle, buferizācija ir izslēgta, pretējā gadījumā tam vajadzētu būt vismaz BUFSIZ baitiem.

setbuf () Atgriešanās vērtība

Nav

Zemāk redzamie 2 piemēri ilustrē funkcijas setbuf () izmantošanu. Abas šīs programmas izmanto failu darbību. Pirmajā piemērā buferis tiek iestatīts, izmantojot setbuf (), lai faila saturu saglabātu iekšēji.

Nākamajā piemērā paziņojums setbuf(fp, NULL)izslēdz buferizāciju. Tātad, lai lasītu faila saturu, tiek izmantota fread ().

1. piemērs: Kā darbojas funkcija 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; )

Palaidot programmu, izeja būs:

 Buferēta straume

2. piemērs: funkcija setbuf () ar izslēgtu buferizāciju

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

Palaidot programmu, izeja būs:

 Netiek nopirkta straume

Interesanti raksti...