Bài giảng Giới thiệu lập trình - Chương 8: Luồng dữ liệu và tệp - Lê Nguyên Khôi

Luồng Dữ Liệu

3

 Chuỗi các ký tự

 Luồng vào (input stream)

 Nhập vào chương trình

Từ bàn phím

Từ tệp

 Luồng ra (output stream)

 Xuất ra khỏi chương trình

Ra màn hình

Ra tệp

 Chúng ta đã sử dụng luồng

 cin

Đối tượng luồng nhập kết nối với bàn phím

 cout

Đối tượng luồng xuất kết nối với màn hình

 Định nghĩa các luồng khác

 Để nhập/xuất cho tệp

 Sử dụng tương tự cin, cout

pdf 19 trang kimcuc 4620
Bạn đang xem tài liệu "Bài giảng Giới thiệu lập trình - Chương 8: Luồng dữ liệu và tệp - Lê Nguyên Khôi", để 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 Giới thiệu lập trình - Chương 8: Luồng dữ liệu và tệp - Lê Nguyên Khôi

Bài giảng Giới thiệu lập trình - Chương 8: Luồng dữ liệu và tệp - Lê Nguyên Khôi
Giới Thiệu Lập Trình
Luồng Dữ Liệu & Tệp
TS. Lê Nguyên Khôi
Trường Đại học Công nghệ, ĐHQGHN
Nội Dung
1
 Luồng Nhập/Xuất
 Tệp Nhập/Xuất
 Ký Tự Nhập/Xuất
 Công cụ cho Luồng Nhập/Xuất
 Sử dụng tên tệp cho dữ liệu vào
 Định dạng dữ liệu ra, cài đặt cờ
 Tệp truy cập ngẫu nhiên
Giới Thiệu Lập Trình
Giới Thiệu
2
 Luồng dữ liệu (stream)
 Đối tượng đặc biệt
 Dùng nhập/xuất dữ liệu của chương trình
 Tệp Nhập/Xuất dùng:
 Nhập dữ liệu từ tệp vào chương trình
 Xuất dữ liệu từ chương trình ra tệp
Giới Thiệu Lập Trình
Luồng Dữ Liệu
3
 Chuỗi các ký tự
 Luồng vào (input stream)
 Nhập vào chương trình
Từ bàn phím
Từ tệp
 Luồng ra (output stream)
 Xuất ra khỏi chương trình
Ra màn hình
Ra tệp
Giới Thiệu Lập Trình
Sử Dụng Luồng Dữ Liệu
4
 Chúng ta đã sử dụng luồng
 cin
Đối tượng luồng nhập kết nối với bàn phím
 cout
Đối tượng luồng xuất kết nối với màn hình
 Định nghĩa các luồng khác
 Để nhập/xuất cho tệp
 Sử dụng tương tự cin, cout
Giới Thiệu Lập Trình
Tệp Văn Bản
5
 Đọc từ tệp
 Khi nhập dữ liệu cho chương trình
 Ghi vào tệp
 Khi chương trình xuất dữ liệu
 Bắt đầu từ đầu đến cuối tệp
 Có nhiều cách thức (đọc/ghi) khác
 Truy cập tệp văn bản đơn giản
Giới Thiệu Lập Trình
Kết Nối Tệp Với Chương Trình
6
 Phải kết nối tệp với đối tượng luồng
 Với nhập dữ liệu:
 Tệp là đối tượng ifstream
 Với xuất dữ liệu:
 Tệp là đối tượng ofstream
 Các lớp ifstream và ofstream
 Được định nghĩa trong thư viện fstream
 Có trong không gian tên std
Giới Thiệu Lập Trình
Thư Viện Tệp Nhập/Xuất
7
 Cho phép nhập/xuất dữ liệu từ/ra tệp:
#include 
using namespace std;
hoặc
#include 
using std::ifstream;
using std::ofstream;
Giới Thiệu Lập Trình
Khai Báo Luồng
8
 Khai báo luồng giống như bất cứ biến nào:
ifstream inStream;
ofstream outStream;
 Sau đó kết nối với tệp:
inStream.open("infile.txt");
 Thực hiện thao tác mở tệp
 Sử dụng hàm thành viên open
 Có thể chỉ định đường dẫn hoàn chỉnh
Giới Thiệu Lập Trình
Sử Dụng Luồng Dữ Liệu
9
 Sau khi khai báo sử dụng như cin
ifstream inStream;
inStream.open("infile.txt"); 
int soThuNhat, soThuHai;
inStream >> soThuNhat;
inStream >> soThuHai;
 Tương tự luồng xuất (giống cout)
ofstream outStream;
outStream.open("outfile.txt");
outStream << "soThuNhat = " << soThuNhat;
outStream << " soThuHai = " << soThuHai;
 Ghi dữ liệu ra tệp
Giới Thiệu Lập Trình
Tên Tệp
10
 Đối với chương trình, tệp có 2 tên:
 Tên tệp ngoại vi
Tên tệp trên ổ cứng, đôi khi được gọi tên tệp thực
Sử dụng một lần trong chương trình (khi mở tệp)
Ví dụ: infile.txt, outfile.txt
 Tên luồng
Tên tệp trong chương trình
Sử dụng tên này cho tất cả các hoạt động đọc/ghi
Ví dụ: inStream, outStream
Giới Thiệu Lập Trình
Đóng Tệp
11
 Tệp nên được đóng lại
 Khi chương trình hoàn tất đọc/ghi dữ liệu
 Đóng kết nối giữa luồng & tệp
 Ví dụ:
inStream.close();
outStream.close();
Không có tham số
 Tệp tự động đóng khi kết thúc chương trình
Giới Thiệu Lập Trình
Nhập/Xuất Dữ Liệu Sử Dụng Tệp 
12
ifstream inStream;
ofstream outStream;
inStream.open("infile.txt");
outStream.open("outfile.txt");
int so1, so2, so3;
inStream >> so1 >> so2 >> so3;
outStream << "Tong 3 so dau la "
<< (so1 + so2 + so3) << endl;
inStream.close();
outStream.close();
Giới Thiệu Lập Trình
Ghi Dữ Liệu Vào Tệp
13
 Thường một tệp được mở là một tệp rỗng
 Nếu tệp tồn tại, toàn bộ dữ liệu bị xóa
 Mở tệp để chèn vào cuối tệp (sử dụng cờ):
ofstream outStream;
outStream.open("outfile.txt", ios::app);
 Nếu tệp không tồn tại, tạo tệp mới
 Nếu tệp tồn tại, chèn vào cuối tệp
 Tham số thứ 2 là hằng trong lớp ios
Trong thư viện iostream
Không gian tên std
Giới Thiệu Lập Trình
Kiểm Tra Mở Tệp Thành Công
14
 Có thể gặp lỗi khi mở tệp
 Khi tệp không tồn tại (để đọc dữ liệu)
 Không có quyền ghi vào tệp
 Sử dụng hàm thành viên fail()
 Gọi hàm thành viên fail() để kiểm tra mở 
luồng thành công không
inStream.open("infile.txt");
if (inStream.fail()) {
cout << "Loi mo file.\n";
exit(1);
}
Giới Thiệu Lập Trình
Kiểm Tra Kết Thúc Tệp
15
 Dùng vòng lặp để xử lý với tệp đến khi hết tệp
 Sử dụng hàm thành viên eof()
inStream.get(next);
while (!inStream.eof()) {
cout << next;
inStream.get(next);
}
 Đọc từng ký tự cho đến khi hết dữ liệu trong tệp
 Hàm thành viên eof() trả về kiểu bool
Giới Thiệu Lập Trình
Nhập Tên Tệp Khi Chạy Chương Trình
16
 Tham số cho open() là kiểu xâu ký tự
 Tên cụ thể hoặc biến
char tenTep[16];
cout << "Nhap ten tep: ";
cin >> tenTep;
ifstream inStream;
inStream.open(tenTep);
 Linh hoạt hơn đối với tên tệp là biến được 
nhập từ bàn phím khi chạy chương trình
Giới Thiệu Lập Trình
Định Dạng Dữ Liệu Xuất
17
 Xuất dữ liệu dưới dạng 2 số thập phân:
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
 In ra màn hình (12.50)
 Hàm thành viên precision(x)
 Phần thập phân dưới dạng "x" số sau dấu “.”
 Hàm thành viên setf()
 Cho cài đặt nhiều định dạng
 Có thể sử dụng cho bất cứ luồng xuất nào
 Đối với luồng cho tệp, hàm thành viên giống 
đối tượng cout
Giới Thiệu Lập Trình
Tham Khảo
18
 Đọc sách:
 Chương 8, Lập Trình Cơ Bản C++
 Tìm hiểu thư viện iomanip
 Các định dạng xuất dữ liệu
 Tìm hiểu thao tác với tệp truy cập ngẫu nhiên
 Hiểu quả cho cơ sở dữ liệu lớn
Giới Thiệu Lập Trình

File đính kèm:

  • pdfbai_giang_gioi_thieu_lap_trinh_chuong_8_luong_du_lieu_va_tep.pdf