Kĩ thuật lập trình - Bài 9: Lập trình điều khiển nhập/ xuất

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++.

pptx21 trang | Chia sẻ: thuychi16 | Lượt xem: 891 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Kĩ thuật lập trình - Bài 9: Lập trình điều khiển nhập/ xuất, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài 9: Lập trình điều khiển nhập/xuấtGiới thiệuNhậ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ấtOstream 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ị 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ậpNhập/xuất không định dạngNhậ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ânNhập/xuất không định dạngHà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ânHà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ùngNhập xuất fileC++ 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ấtLàm việc với FileGhi dữ liệu vào File1. 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 coutGhi dữ liệu vào fileTạo một đối tượng thuộc ofstream để mở một fileCách 1ofstream outFile("data.txt");Cách 2ofstream outFile;outFile.open("data.txt);Cách 3ofstream out("data.txt", ios::nocreate);Ghi dữ liệu vào fileFile Mode:ios::app means append the fileios::ate means position the fileios::nocreate means the file must exist, otherwise the open failsios::noreplace means the file must not exist, otherwise the open failsVí dụofstream out("data.txt", ios::nocreate);if(out) cout> 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#include#includeusing namespace std;int main(){int stuId;string name;double gpa;ofstream outFile;outFile.open("Students.txt");if(!outFile.good())cout > stuId >> name >> gpa){outFile #include#include#includeusing namespace std;int main(){int stuId;string name;double gpa;const int COL_SZ = 10;ifstream inFile;inFile.open("Students.txt");if(!inFile.good())cout > stuId >> name >> gpa){cout >(istream&, Student&);private: int stuId; string name; double gpa;};ostream& operator>(istream& in, Student& stu){in >> stu.stuId >> stu.name >> stu.gpa;return in;}A Student class#include#include#include#includeusing namespace std;int main(){Student aStudent;ofstream outFile;outFile.open("Students2.txt");cout > aStudent){outFile #include#include#includeusing namespace std;int main(){Student aStudent;ifstream inFile;inFile.open("Students2.txt");cout > aStudent){cout << "Student: " << aStudent;}inFile.close();return 0;}