Bài 9 - Lập trình điều khiển nhập/xuất. Bài này gồm có những nội dung chính sau: Nhập/xuất thiết bị, dòng xuất, nhập/xuất không định dạng, ghi dữ liệu vào file, đọc dữ liệu từ file, đọc/ghi cả đối tượng. Mời các bạn cùng tham khảo.
AMBIENT/
Chủ đề:
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Bài 9 - 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
- 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 offile đạ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();
- 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ậpxuấ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
- 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
- Đọ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
- #include while(cin >> stuId >> name >>
#include gpa)
#include {
using namespace std; outFile
- Ví dụ đọc dữ liệu từ tệp xuất ra màn hình
else
#include {
#include cout
- Đọc / ghi cả đối tượng
class Student ostream& operator
- Đọc / ghi cả đối tượng
#include while (cin >> aStudent)
#include {
#include outFile