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++.
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 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:
bai_giang_lap_trinh_huong_doi_tuong_bai_9_lap_trinh_dieu_khi.pptx

