C ++ setbuf () - Thư viện chuẩn C ++

Hàm setbuf () trong C ++ đặt bộ đệm bên trong được sử dụng cho các hoạt động I / O bởi một luồng.

nguyên mẫu setbuf ()

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

Nếu bộ đệm không null, nó tương đương với việc gọi setvbuf (luồng, bộ đệm, _IOFBF, BUFSIZ).

Nếu bộ đệm là null, nó tương đương với việc gọi setvbuf (stream, NULL, _IONBF, 0). Trong trường hợp này, bộ đệm bị tắt.

Nó được định nghĩa trong tệp tiêu đề.

Tham số setbuf ()

  • stream: Một dòng tệp.
  • đệm: Một con trỏ đến một bộ đệm có thể rỗng hoặc không. Nếu nó là null, bộ đệm sẽ bị tắt, nếu không, nó phải có ít nhất BUFSIZ byte.

setbuf () Giá trị trả về

không ai

2 ví dụ dưới đây minh họa việc sử dụng hàm setbuf (). Cả hai chương trình này đều sử dụng thao tác tệp. Trong ví dụ đầu tiên, bộ đệm được thiết lập bằng cách sử dụng setbuf () để lưu trữ nội dung của tệp bên trong.

Trong ví dụ tiếp theo, câu lệnh setbuf(fp, NULL)tắt bộ đệm. Vì vậy, để đọc nội dung tệp, fread () được sử dụng.

Ví dụ 1: Cách hoạt động của hàm 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; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Luồng được đệm

Ví dụ 2: Hàm setbuf () với bộ đệm bị tắt

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

Khi bạn chạy chương trình, đầu ra sẽ là:

 Luồng không có bộ đệm

thú vị bài viết...