Chương 7 Các dòng tập tin (Stream) Xây dựng toán tử nhâp xuất đối tượng trên tệp

5 340 0
Chương 7 Các dòng tập tin (Stream) Xây dựng toán tử nhâp xuất đối tượng trên tệp

Đang tải... (xem toàn văn)

Thông tin tài liệu

Xây dựng toán tử nhâp xuất đối tượng trên tệp Trong các mục trên đã trình bầy cách dùng các toán tử nhập >> và xuất << để ghi dữ liệu kiểu chuẩn (nguyên, thực, ký tự, chuỗi ký tự) trên tệp. Mục này trình bầy cách xây dựng các toán tử dùng để đọc ghi các đối tượng của một lớp bất kỳ do người dùng định nghĩa. Giả sử chúng ta muốn sử dụng các toán tử nhập xuất để đọc ghi các đối tượng của lớp TS. Khi đó ta đưa vào các hàm bạn toán tử nhập xuất như sau: class TS { private: // Khai báo các thuộc tính public: friend fstream& operator<<(fstream& fs,const TS &t); friend fstream& operator>>(fstream& fs,TS &t); . } ; Về kiểu ghi: Có thể xây dựng các toán tử để thực hiện các phép đọc ghi theo kiểu văn bản cũng như nhị phân. Ví dụ 1: Ghi theo kiểu văn bản Chương trình dưới đây minh hoạ cách xây dựng và sử dụng các toán tử nhập xuất đối tượng trên màn hình, bàn phím và tệp. Chương trình đưa vào lớp TS (Thí sinh) và các hàm toán tử cho phép nhập xuất các đối tượng TS trên màn hình, bàn phím và tệp. Chương trình gồm các nội dung sau: + Tạo tệp TS.DL dùng để đọc và ghi theo kiểu văn bản. + Nhập 3 thí sinh từ bàn phím và chứa vào 3 biến đối tượng t1, t2, t3. + Ghi nội dung của 3 biến đối tượng t1, t2, t3 lên tệp TS.DL + Đọc các đối tượng từ tệp TS.DL và chứa vào 3 biến t4, t5, t6 + In các biến đối tượng t4, t5, t6 ra màn hình + Chuyển con trỏ về đầu tệp, dùng chu trình while để lần lượt đọc các đối tượng từ tệp và in ra màn hình. Dùng phương thức eof để kiểm tra xem đã đọc hết dữ liệu hay chưa. //CT7_17.CPP // Cac toan tu doc ghi doi tuong tren Tep #include <iostream.h> #include <iomanip.h> #include <fstream.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> class TS { 438 private: char ht[25]; float td; public: friend ostream& operator<<(ostream& os,const TS &t); friend istream& operator>>(istream& is,TS &t); friend fstream& operator<<(fstream& fs,const TS &t); friend fstream& operator>>(fstream& fs,TS &t); }; fstream& operator>>(fstream& fs,TS &t) { fs.getline(t.ht,25); fs >> t.td; fs.ignore(); return fs; } ostream& operator<<(ostream& os,const TS &t) { os << "\nHo ten: " << t.ht ; os << "\nTong diem: " << t.td; return os; } fstream& operator<<(fstream& fs,const TS &t) { fs << t.ht << endl; fs << t.td << endl; return fs; } istream& operator>>(istream& is,TS &t) { cout << "\nHo ten: " ; is.get(t.ht,25); cout << "Tong diem: " ; is >> t.td ; is.ignore(); return is; } void main() { clrscr(); fstream f("TS.DL",ios::out | ios::in | ios::trunc); TS t1,t2,t3,t4,t5,t6,t; cin >> t1 >> t2 >> t3; f << t1 << t2 <<t3; f.seekg(0); f>>t4>>t5>>t6; cout << t4 << t5 << t6; f.seekg(0); while (f>>t ,!f.eof()) cout << t; f.close(); cout << "\n Xong"; getch(); } Ví dụ 2 : Ghi theo kiểu nhị phân Chương trình dưới đây cũng có các chức năng như chương trình trong ví dụ 1 bên trên, nhưng cách ghi đọc tệp theo kiểu nhị phân. //CT7_19.CPP // Cac toan tu doc ghi doi tuong tren Tep // Kieu nhi phan #include <iostream.h> #include <iomanip.h> #include <fstream.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> class TS { private: char ht[25]; float td; static int size; public: friend ostream& operator<<(ostream& os,const TS &t); friend istream& operator>>(istream& is,TS &t); friend fstream& operator<<(fstream& fs,const TS &t); friend fstream& operator>>(fstream& fs,TS &t); 440 }; int TS::size= sizeof(TS); fstream& operator>>(fstream& fs,TS &t) { fs.read( (char*)(&t) , t.size); return fs; } fstream& operator<<(fstream& fs,const TS &t) { fs.write( (char*)(&t) , t.size); return fs; } ostream& operator<<(ostream& os,const TS &t) { os << t.ht << endl; os << t.td << endl; return os; } istream& operator>>(istream& is,TS &t) { cout << "\nHo ten: " ; is.get(t.ht,25); cout << "Tong diem: " ; is >> t.td ; is.ignore(); return is; } void main() { clrscr(); fstream f("THU.DL",ios::binary | ios::out|ios::in|ios::trunc); TS t1,t2,t3,t4,t5,t6,t; cin >> t1 >> t2 >> t3; f << t1 << t2 <<t3; f.seekg(0); f>>t4>>t5>>t6; cout << t4 << t5 << t6; f.seekg(0); while( f>>t ,!f.eof() ) 442 cout << t; f.close(); cout << "\n Xong"; getch(); } . Xây dựng toán tử nhâp xuất đối tượng trên tệp Trong các mục trên đã trình bầy cách dùng các toán tử nhập >> và xuất << để. hoạ cách xây dựng và sử dụng các toán tử nhập xuất đối tượng trên màn hình, bàn phím và tệp. Chương trình đưa vào lớp TS (Thí sinh) và các hàm toán tử cho

Ngày đăng: 24/10/2013, 15:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan