Để đọc ghi đồng thời trên tệp, chúng ta sử dụng lớp fstream. Lớp fstream thừa kế các phương thức của các lớp ofstream và ifstream. Ngoài ra lớp fstream có các hàm tạo và phương thức sau:
1. Hàm tạo:
fstream() ; // Không đối
dùng để tạo một đối tượng fstream (dòng nhập-xuất), chưa gắn với tệp.
2. Hàm tạo:
fstream(const char *fn, int mode, int prot = filebuf::openprot);
dùng để tạo một đối tượng fstream, mở tệp có tên fn và gắn đối tượng vừa tạo với tệp được mở.
+ Tham số fn cho biết tên tệp.
+ Tham số mode quy định các kiểu truy nhập và có thể là tổ hợp của các giá trị sau:
ios::binary đọc-ghi theo kiểu nhị phân (mặc định theo kiểu văn bản).
ios::out ghi tệp, nếu tệp đã có thì nó bị xoá ios::in đọc tệp
ios::app ghi bổ sung vào cuối tệp
ios::ate chuyển con trỏ tệp về cuối sau khi mở ios::trunc xoá nội dung của tệp nếu nó tồn tạI
ios::nocreate nếu tệp chưa có thì không làm gì (bỏ qua) ios::noreplace nếu tệp đã có thì không làm gì (bỏ qua)
Chú ý:
+ Tham số mode không có giá trị mặc định.
+ Tham số thứ ba prot quy định cấp bảo vệ của dòng tin, tham số này có thể bỏ qua vì nó đã được gán một giá trị mặc định.
3. Hàm tạo:
fstream(int fd);
dùng để tạo một đối tượng fstream và gắn nó với một tệp có chỉ số fd đang mở.
(Để mở và lấy chỉ số (số hiệu) tệp có thể dùng hàm _open, xem cuốn Kỹ thuật Lập trình C của tác giả)
4. Hàm tạo:
fstream(int fd, char *buf, int n);
dùng để tạo một đối tượng fstream , gắn nó với một tệp có chỉ số fd đang mở và sử dùng một vùng nhớ n byte do buf trỏ tới làm bộ đệm.
5. Phương thức:
void open(const char *fn, int mode, int prot = filebuf::openprot);
dùng để mở tệp có tên fn và gắn nó với đối tượng fstream. Các tham số của phương thức có cùng ý nghĩa như trong hàm tạo thứ 2.
Chú ý: Tham số mode không có giá trị mặc định.