Thứ Hai, 31 tháng 7, 2017

1. Khái niệm chung
Tới bây giờ, chúng ta đã sử dụng thư viện chuẩn iostream, cung cấp các phương thức cin và cout để đọc từ bàn phím và in ra màn hình.
Việc đọc và ghi dữ liệu vào file sử dụng các lớp sau của C++: lớp fstream là lớp dẫn xuất từ 2 lớp ofstream và ifstream. Lớp ofstream là lớp dẫn xuất từ các lớp ios, ostream, fstreambase. Lớp ifstream là lớp dẫn xuất từ các lớp ios, istream, fstreambase.
Kiểu dữ liệu
Miêu tả
ofstream
Kiểu dữ liệu này biểu thị dòng xuất ra tệp và được sử dụng để tạo tệp và để ghi thông tin vào tệp
ifstream
Kiểu dữ liệu này biểu thị dòng nhập tệp và được sử dụng để đọc thông tin từ tệp
fstream
Kiểu dữ liệu này có các khả năng của cả ofstream và ifstream, nghĩa là nó có thể tạo file, ghi thông tin vào file và đọc thông tin từ file
Để xử lý file trong C++ đầu chương trình cần các lệnh #include <iostream> và #include <fstream>
2. Mở một File
Một file phải được mở trước khi đọc thông tin từ nó hoặc ghi thông tin tới nó. Đối tượng của lớp ofstream hoặc fstream được dùng để mở một file để ghi, đối tượng của lớp ifstream được sử dụng để mở file với mục đích đọc.
Cú pháp cho hàm open(), là một thành viên của các đối tượng thuộc lớp fstream, ifstream và ofstream
void open(const char *ten_file, ios::che_do);
Tham số đầu tiên xác định tên và vị trí của file được mở, tham số thứ hai của hàm open() xác định chế độ file được mở.



Chế độ
Miêu tả
ios::app
Tất cả dữ liệu xuất tới tệp được bổ sung vào cuối tệp
ios::ate
Mở tệp để xuất và di chuyển điều khiển đọc / ghi vào cuối tệp
ios::in
Mở một file để đọc
ios::out
Mở một file để ghi
ios::trunc
Nếu file này đã tồn tại, nội dung của nó sẽ được xóa trước khi mở file
Ios::binary
Đọc/Ghi theo kiểu nhị phân, ngầm định là theo kiểu văn bản
Ios::nocreate
Nếu tệp chưa có thì không làm gì
Ios::noreplace
Nếu tệp đã có thì không làm gì
Bạn có thể kết hợp hai hoặc nhiều giá trị này bằng cách sử dụng dấu vạch đứng (|). Ví dụ,  bạn muốn mở một file để xuất và muốn xóa nó nếu nó đã tồn tại:
ofstream f;
f.open("file.dat", ios::out | ios::trunc );
3. Đóng một File
Hàm close() là một thành viên của đối tượng thuộc các lớp fstream, ifstream và ofstream dùng để đóng file
4. Ghi File
Sử dụng toán tử (<<) của đối tượng thuộc lớp ofstream hoặc fstream 
5. Đọc một File
Sử dụng toán tử (>>) của đối tượng thuộc lớp ifstream hoặc fstream 
6. Di chuyển con trỏ tệp
Cả hai lớp istream và ostream đều cung cấp hàm để xác định lại vị trí của con trỏ tệp: seekg (viết tắt của seek get) cho istream và seekp (viết tắt của seek put) cho ostream.
Tham số cho seekg và seekp thường là một số nguyên kiểu long int xác định số byte cần di chuyển. Tham số thứ hai xác định điểm xuất phát của việc di chuyển. Điểm xuất phát có thể  là đầu tệp ios::beg (mặc định), có thể là từ vị trí hiện hành của con trỏ ios::cur, có thể là từ cuối tệp  ios::end.
f.seekg( n );                 //  xuất phát từ đầu tệp di chuyển n byte
f.seekg( n, ios::cur );   //  xuất phát từ vị trí hiện tại của con trỏ tệp di chuyển n byte
f.seekg( n, ios::end );  // xuất phát từ cuối tệp di chuyển n byte
f.seekg( 0, ios::end );  //  đặt con trỏ vào cuối tệp
7. Chương trình minh họa
Bước 1. Tạo 1 file văn bản dulieu.txtchứa dữ liệu về các học sinh:
3
Bui Van Tan
2002  7.5   8   10
Le Binh
2003  8  9  10
Tran Binh Trong
2001  5.5   6.5   7.5
Tệp dữ liệu có thể nhập trực tiếp từ 1 trình soạn thảo văn bản.

Bước 2. Đọc dữ liệu từ tệp văn bản lưu vào 1 mảng cấu trúc.

0 nhận xét:

Đăng nhận xét

Categories

Sample Text

Được tạo bởi Blogger.

Must Read

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Popular Posts

Video

Popular Posts

Our Facebook Page