kiem tien, kiem tien online, kiem tien truc tuyen, kiem tien tren mang
Thứ Ba, 18 tháng 10, 2011

C++ cung cấp cho ta các lớp sau đây để làm việc với file
ofstream: lớp ghi dữ liệu ra file.
ifstream: lớp đọc dữ liệu từ file.
fstream: lớp để đọc/ghi dữ liệu từ/lên file.

Các lớp này là dẫn xuất trực tiếp hoặc gián tiến từ lớp istream và ostream. Chúng ta sử dụng đối tượng cinlà một thể hiện của lớp istream và cout là một thể hiện của lớp ostream. Chúng ta cũng có thể sử dụng trực tiếp các đối tượng của lớp ofstream, ifstream hoặc fstream để làm việc trực tiếp với file. Ví dụ sau đây sẽ cho thấy điều này



Ví dụ


#include #include
using namespace std;
int main()

{
  ofstream myfile;
  myfile.open(“example.txt”);
  myfile.<<”Ghi du lieu ra file”;
  myfile.close();
  return 0;
}


Ví dụ này chỉ đơn thuần ghi câu “Ghi du lieu ra file” lên tệp example.txt.

Chúng ta sẽ nghiên cứu từng bước khi làm việc với các đối tượng của ba lớp mà chúng ta nêu ở trên..


Mở file

Để mở file trong chương trình bằng một đối tượng stream, chúng ta sử dụng hàm thành viên open(tên_file, chế_độ_mở).

Trong đó,

- tên_file: là tên của file mà chúng ta cần mở. Bạn phải đảm bảo cung cấp đường dẫn chính xác đến tập tin này. Nếu bạn cung cấp đường dẫn tuyệt đối, thì mọi việc sẽ bình thường. Nhưng nếu bạn cung cấp đường dẫn tương đối, bạn cần tuân thủ nguyên tắc như khi làm việc với tệp .cpp và .h như tôi đã trình bày ở trên.

- chế_độ_mở: là tham số tùy chọn, thường trong C++ nó có thể là các cờ hiệu sau đây:



Cờ hiệu

Giải thích


ios::in

Mở file để đọc.


ios::out

Mở file để ghi.


ios::binary

Mở file ở chế độ nhị phân (thường áp dụng cho các file mã hóa).


ios::ate

Thiết lập vị trí khởi tạo tại vị trí cuối cùng của file. Nếu cờ hiệu này không thiết lập bất kì giá trị nào, vị trí khởi tạo sẽ đặt ở đầu file.


ios::app

Mọi dữ liệu được ghi ra file sẽ tiến hành bổ sung vào cuối file (không ghi đè lên file). Cờ hiệu này chỉ có thể sử dụng trong tác vụ mở file để ghi.


ios::trunc

Nếu một file được mở để ghi đã tồn tại, nó sẽ ghi đè lên nội dung cũ.


Các cờ hiệu này có thể được kết hợp bằng cách sử dụng toán tử dịch bit OR (|). Ví dụ, tôi muốn mở một file nhị phân example.bin để ghi dữ liệu và bổ sung dữ liệu ở cuối file này, tôi có thể viết như sau



ofstream myfile; myfile.open(“example.bin”, ios::out|ios::app, ios::binary);


Thành viên open của các lớp ofstream, ifstream và fstream có tham số chế_độ_mở mặc định (trong trường hợp tham số này không được chỉ định) được đưa ra trong bảng sau:



Lớp

chế_độ_mở mặc định


ofstream

ios::out


ifstream

ios::in


fstream

ios::in|ios::out


Nếu tham số được ấn định một giá trị cụ thể, thì tham số được sử dụng sẽ ghi đè lên tham số mặc định mà không phải là kết hợp với tham số mặc định. Ví dụ, bạn sử dụng ofstream để mở file với tham số chế_độ_mở được quy định là ios::binary, thì tham số mở sẽ là ios::binary chứ không phải là ios::out|ios::binary.

Nếu bạn sử dụng hàm khởi tạo cho các lớp này, thì phương thức thành viên open sẽ tự động được triệu gọi. Nghĩa là bạn có thể viết



ofstream myfile(“example.bin”, ios::out|ios::app, ios::binary);


thay cho cách viết ở trên.

Để kiểm tra một file đã mở thành công hay chưa, bạn có thể sử dụng phương thức is_open. Nếu đã mở thành công, nó sẽ trả về giá trị true và ngược lại, nếu mở không thành công, nó sẽ trả về giá trị false.
Đóng file

Khi chúng ta hoàn tất công việc với một file, chúng ta cần thực hiện thao tác đóng file lại. Tác vụ này là bắt buộc nếu bạn đã làm việc hoàn tất với file. Bạn chỉ đơn thuần triệu gọi phương thức thành viên close



myfile.close();


Nếu phương thức hủy của đối tượng được triệu gọi, phương thức close sẽ tự động được gọi theo.


0 nhận xét:

Đăng nhận xét

domain, domain name, premium domain name for sales

Bài đăng phổ biến