Bài giảng Công nghệ phần mềm - Bài 9: Lập trình điều khiển - nhập/xuất - Phạm Thị Bích Vân
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Bài 9: Lập trình điều khiển - nhập/xuất - Phạm Thị Bích Vân", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_cong_nghe_phan_mem_bai_9_lap_trinh_dieu_khien_nhap.pptx
Nội dung text: Bài giảng Công nghệ phần mềm - Bài 9: Lập trình điều khiển - nhập/xuất - Phạm Thị Bích Vân
- Bài 9: Lập trình điều khiển nhập/xuất
- Giới thiệu • Nhập/xuất bao gồm: ▫ Nhập xuất từ bàn phím. ▫ Nhập xuất từ file. • Phần lớn các đặc tính nhập xuất cho phép nạp chồng hàm và nạp chồng toán tử. ÞNgoài nhập xuất các kiểu dữ liệu cơ bản, người dùng có thể xây dựng nhập/xuất cho kiểu dữ liệu người dùng định nghĩa ÞLà đặc tính mở quan trọng của C++.
- Nhập/xuất thiết bị • Thư viện iostream.h cung cấp khả năng lớn các kiểu nhập xuất. • Thư viện này bao gồm các lớp:
- Dòng xuất • Ostream cung cấp các khả năng xuất định dạng và xuất không định dạng. • cout là đối tượng thuộc lớp ostream là xuất dòng ra màn hình. • Toán tử chèn dòng << để đưa các giá trị cần xuất lên dòng xuất. • Toán tử << đã được nạp chồng để làm việc với các kiểu dữ liệu định sẵn, kiểu string, giá trị con trỏ. Cho phép người dùng nạp chồng để thực hiện với kiểu dl người dùng định nghĩa. • Hàm put để xuất một ký tự ra màn hình.
- Dòng nhập • istream cung cấp các khả năng nhập định dạng và không định dạng. • cin là đối tượng thuộc lớp istream, là dòng nhập từ bàn phím. • Toán tử trích >> để đưa các giá trị từ dòng nhập vào các biến. • Toán tử >> đã được nạp chồng để làm việc với các kiểu dữ liệu định sẵn, kiểu string, giá trị con trỏ. Cho phép người dùng nạp chồng để thực hiện với kiểu dl người dùng định nghĩa. • Các hàm khác của dòng nhập: get(), getline(), ignore(), putback ()- đặt ký tự trở lại dòng nhập
- Nhập/xuất không định dạng • Nhập/xuất không định dạng được thực hiện với các hàm thành viên istream::read() và ostream::write(). • Hàm istream::read(): ▫ istream& read(unsigned char* puch, int nCount); ▫ istream& read(signed char* psch, int nCount); Trích các byte từ dòng cho đến khi giới hạn nCount đạt đến hoặc cho đến khi end- of-file đạt đến. Hàm này có ích cho dòng nhập nhị phân
- Nhập/xuất không định dạng • Hàm ostream::write(): ▫ ostream& write(const unsigned char* puch, int nCount); ▫ ostream& write(const signed char* psch, int nCount); Chèn nCount byte vào từ vùng đệm (được trỏ bởi puch và psch) vào dòng. Nếu file được mở ở chế độ text, các ký tự CR có thể được chèn vào. Hàm này có ích cho dòng xuất nhị phân • Hàm istream::gcount(): int gcount(); Hàm trả về số ký tự đã trích bởi hàm nhập không định dạng cuối cùng
- Nhập xuất file • C++ hỗ trợ các lớp: ▫ ofstream dùng để tạo các dòng xuất (ghi tệp) ▫ ifstream dùng để tạo các dòng nhập (đọc tệp) ▫ fstream dùng để tạo các dòng nhập, dòng xuất hoặc dòng nhập-xuất
- Làm việc với File
- Ghi dữ liệu vào File • 1. Dùng lớp ofstream để tạo ra một dòng xuất và gắn nó với một tệp cụ thể. Khi đó việc xuất dữ liệu ra dòng này đồng nghĩa với việc ghi dữ liệu lên tệp. • 2. Thực hiện xuất dữ liệu ra dòng xuất vừa tạo như thể xuất dữ liệu ra dòng xuất chuẩn cout
- Ghi dữ liệu vào file • Tạo một đối tượng thuộc ofstream để mở một file • Cách 1 ▫ ofstream outFile("data.txt"); • Cách 2 ▫ ofstream outFile; ▫ outFile.open("data.txt); • Cách 3 ▫ ofstream out("data.txt", ios::nocreate);
- Ghi dữ liệu vào file • File Mode: ▫ ios::app means append the file ▫ ios::ate means position the file ▫ ios::nocreate means the file must exist, otherwise the open fails ▫ ios::noreplace means the file must not exist, otherwise the open fails
- Ví dụ • ofstream out("data.txt", ios::nocreate); if(out) if(!out) cout<<"File opened"; cout<<"fails!"; if(out.good() if(!out.good() cout<<"File opened"; cout<<"fails"; if (!out.fail()) if (out.fail()) cout<<"File opened"; cout<<"fails";
- Ghi dữ liệu vào File Khi đã có đối tượng mở file ta có thể ghi dữ liệu ra file như sau: out<<"This is going to the disk"; Sử dụng hàm close để đóng file out.close(); Hoặc dùng hàm hủy để đóng. out.~ofstream();
- Đọc dữ liệu từ File • Tạo một đối tượng dòng nhập thuộc lớp ifstream, mở một tệp để đọc và gắn tệp với dòng nhập. • Sau đó dùng toán tử nhập >> và các phương thức để nhập dữ liệu từ dòng nhập vừa tạo như thể nhập dữ liệu từ cin
- Ví dụ ifstream someData("data.txt"); char aChar; someData.get(aChar); while(someData) { someData.get(aChar); cout<<aChar; }
- #include while(cin >> stuId >> name >> gpa) #include { #include outFile << stuId << " " << name << " using namespace std; " <<gpa << endl; int main() { cout << "Enter ID, name, and grade point average" << endl; int stuId; string name; cout << "Enter end-of-file key double gpa; combination to end "; ofstream outFile; } outFile.open("Students.txt"); } if(!outFile.good()) outFile.close(); cout << "File could not be opened" << return 0; endl; } else { cout << "Enter ID, name, and grade point average" << endl; Ví dụ đọc dữ liệu từ bàn cout << "Enter end-of-file key combination to end "; phím, ghi dữ liệu ra tệp
- Ví dụ đọc dữ liệu từ tệp xuất ra màn hình #include else { #include cout cout cout > stuId >> name >> gpa) double gpa; { const int COL_SZ = 10; cout << setw(COL_SZ) << stuId << ifstream inFile; setw(COL_SZ) << name <<setw(COL_SZ) << gpa << endl; inFile.open("Students.txt"); } if(!inFile.good()) } cout << "File could not be inFile.close(); opened" << endl; return 0; }
- Đọc / ghi cả đối tượng class Student ostream& operator >(istream&, stu.gpa >(istream& in, string name; Student& stu) double gpa; { }; in >> stu.stuId >> stu.name >> stu.gpa; return in; } A Student class
- Đọc / ghi cả đối tượng #include while (cin >> aStudent) #include { #include outFile cout << "Enter ID, name, and grade using namespace std; point average" << int main() endl; { cout << "Enter end-of-file key Student aStudent; combination to end "; ofstream outFile; } outFile.open("Students2.txt"); cout << "Enter ID, name, and grade point outFile.close(); average" <<endl; return 0; cout << "Enter end-of-file key } combination to end "; Program that writes objects to an output file
- #include #include #include #include using namespace std; int main() { Student aStudent; ifstream inFile; inFile.open("Students2.txt"); cout > aStudent) { cout << "Student: " << aStudent; } inFile.close(); return 0; }