C ++ setbuf () - Perpustakaan Standard C ++

Fungsi setbuf () dalam C ++ menetapkan penyangga dalaman yang akan digunakan untuk operasi I / O oleh aliran.

prototaip setbuf ()

 batal setbuf (aliran FILE *, char * buffer);

Sekiranya buffer tidak kosong, ia sama dengan memanggil setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Sekiranya penyangga tidak ada, ia sama dengan memanggil setvbuf (aliran, NULL, _IONBF, 0). Dalam kes ini buffering dimatikan.

Ia ditakrifkan dalam fail tajuk.

setbuf () Parameter

  • aliran: Aliran fail.
  • penyangga: Penunjuk ke penyangga yang mungkin batal atau tidak. Sekiranya tidak ada, buffering dimatikan, jika tidak, sekurang-kurangnya BUFSIZ bait.

setbuf () Nilai pulangan

Tiada

2 contoh di bawah menggambarkan penggunaan fungsi setbuf (). Kedua-dua program ini menggunakan operasi fail. Dalam contoh pertama, buffer ditetapkan menggunakan setbuf () untuk menyimpan kandungan fail secara dalaman.

Dalam contoh seterusnya, pernyataan setbuf(fp, NULL)itu mematikan penyanggaan. Jadi untuk membaca kandungan fail, fread () digunakan.

Contoh 1: Bagaimana fungsi setbuf () berfungsi

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

Semasa anda menjalankan program, outputnya adalah:

 Aliran Buffered

Contoh 2: fungsi setbuf () dengan buffering dimatikan

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

Semasa anda menjalankan program, outputnya adalah:

 Aliran Tidak Dibeli

Artikel menarik...