Bài giảng Lập trình hướng đối tượng - Bài 9: Lập trình điều khiển nhập/xuất - Phạm Thị Bích Vân

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

 

pptx 21 trang yennguyen 3240
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - 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 hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Bài 9: Lập trình điều khiển nhập/xuất - Phạm Thị Bích Vân

Bài giảng Lập trình hướng đối tượng - 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) 
 cout<<"File opened"; 
if(out.good() 
 cout<<"File opened"; 
if (!out.fail()) 
 cout<<"File opened"; 
if(!out) 
 cout<<"fails!"; 
if(!out.good() 
 cout<<"fails"; 
if (out.fail()) 
 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 
#include 
#include 
using namespace std; 
int main() 
{ 
int stuId; 
string name; 
double gpa; 
ofstream outFile; 
outFile.open("Students.txt"); 
if(!outFile.good()) 
cout << "File could not be opened" << endl; 
else 
{ 
cout << "Enter ID, name, and grade point average" << 
endl; 
cout << "Enter end-of-file key combination to end "; 
while(cin >> stuId >> name >> gpa) 
{ 
outFile << stuId << " " << name << " " <<gpa << endl; 
cout << "Enter ID, name, and grade point average" << endl; 
cout << "Enter end-of-file key combination to end "; 
} 
} 
outFile.close(); 
return 0; 
} 
Ví dụ đọc dữ liệu từ bàn 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 
#include 
#include 
#include 
using 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 << "File could not be opened" << endl; 
else 
{ 
cout << left; 
cout << "Student records:" << endl; 
cout << setw(COL_SZ) << "ID" << setw(COL_SZ) << 
"Name" << setw(COL_SZ) << "Grade point average" << 
endl; 
while(inFile >> stuId >> name >> gpa) 
{ 
cout << setw(COL_SZ) << stuId << setw(COL_SZ) << 
name <<setw(COL_SZ) << gpa << endl; 
} 
} 
inFile.close(); 
return 0; 
} 
Đọc / ghi cả đối tượng 
class Student 
{ 
friend ostream& operator<<(ostream&, Student); 
friend istream& operator>>(istream&, Student&); 
private: 
	int stuId; 
	string name; 
	double gpa; 
}; 
ostream& operator<<(ostream& out, Student stu) 
{ 
out << stu.stuId << " " << stu.name << " " << 
stu.gpa << endl; 
return out; 
} 
istream& operator>>(istream& in, Student& stu) 
{ 
in >> stu.stuId >> stu.name >> stu.gpa; 
return in; 
} 
A Student class 
#include 
#include 
#include 
#include 
using namespace std; 
int main() 
{ 
Student aStudent; 
ofstream outFile; 
outFile.open("Students2.txt"); 
cout << "Enter ID, name, and grade point average" <<endl; 
cout << "Enter end-of-file key combination to end "; 
while (cin >> aStudent) 
{ 
outFile << aStudent << endl; 
cout << "Enter ID, name, and grade point average" << 
endl; 
cout << "Enter end-of-file key combination to end "; 
} 
outFile.close(); 
return 0; 
} 
Program that writes objects to an output file 
Đọc / ghi cả đối tượng 
#include 
#include 
#include 
#include 
using namespace std; 
int main() 
{ 
Student aStudent; 
ifstream inFile; 
inFile.open("Students2.txt"); 
cout << endl << "Output from disk:" << endl; 
while(inFile >> aStudent) 
{ 
cout << "Student: " << aStudent; 
} 
inFile.close(); 
return 0; 
} 

File đính kèm:

  • pptxbai_giang_lap_trinh_huong_doi_tuong_bai_9_lap_trinh_dieu_khi.pptx