Bài giảng Lập trình nâng cao: Bài 12 - Hoàng Thị Điệp
lượt xem 3
download
Bài 12 trang bị cho người học những hiểu biết về đọc/ghi trên luồng và tệp. Chương này gồm có những nội dung chính sau: Đọc/ghi trên luồng, công cụ đọc/ghi trên luồng, phân cấp luồng, phương thức truy cập ngẫu nhiên trên tệp. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình nâng cao: Bài 12 - Hoàng Thị Điệp
- Bài 12: Đọc/ghi trên luồng và tệp Giảng viên: Hoàng Thị Điệp Khoa Công nghệ Thông tin – ĐH Công Nghệ
- Thuật ngữ • stream: dòng tin / dòng / luồng • input stream: luồng nhập • output stream: luồng xuất • standard input stream: luồng nhập chuẩn == bàn phím • standard output stream: luồng xuất chuẩn == màn hình • file: tệp • text file: tệp văn bản • binary file: tệp nhị phân DTH INT2202
- Chapter 12 Streams and File I/O Copyright © 2010 Pearson Addison-Wesley. All rights reserved
- Mục tiêu bài học • Đọc/ghi trên luồng – Đọc/ghi trên tệp – Đọc/ghi kí tự • Công cụ đọc/ghi trên luồng – Tên tệp là input – Định dạng kết quả xuất, thiết đặt cờ • Phân cấp luồng – Sơ lược về khái niệm thừa kế • Phương thức truy cập ngẫu nhiên trên tệp DTH INT2202
- Giới thiệu • Luồng – Các đối tượng đặc biệt – Chuyển phát input và output của chương trình • Đọc/ghi trên tệp – Sử dụng khái niệm thừa kế • Giới thiệu ở chương 14 giáo trình – Đọc/ghi trên tệp rất hữu ích • Được giới thiệu ở bài này DTH INT2202
- Luồng • Một dòng chảy kí tự • Luồng nhập – Các kí tự chảy vào chương trình • Có thể xuất phát từ bàn phím • Có thể xuất phát từ tệp • Luồng xuất – Các kí tự chảy từ chương trình ra • Có thể hướng tới màn hình • Có thể hướng tới tệp DTH INT2202
- Sử dụng luồng • Ta đ ã sử dụng luồng ở các bài trước – 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 • Có thể định nghĩa các luồng khác – Hướng tới hoặc xuất phát từ tệp – Dùng tương tự như cin, cout DTH INT2202
- Sử dụng luồng giống cách dùng cin, cout • Xét ví dụ: – Một chương trình định nghĩa đối tượng inStream xuất phát từ tệp nào đó: int theNumber; inStream >> theNumber; • Đọc giá trị từ luồng, gán cho biến theNumber – Chương trình này cũng định nghĩa đối tượng outStream hướng tới tệp nào đó outStream
- Tệp • Ta s ẽ bàn về các thao tác trên tệp văn bản • Đọc từ tệp – Khi chương trình lấy input • Viết vào tệp – Khi chương trình truyền output ra • Bắt đầu từ đầu tệp tới cuối tệp – C++ có những phương thức đọc/ghi khác – Nhưng ở đây ta chỉ bàn về những phương thức đơn giản trên tệp văn bản DTH INT2202
- Kết nối với tệp • Trước tiên phải kết nối tệp và đối tượng luồng • Để đọc: – Tệp đối tượng ifstream • Để ghi: – Tệp đối tượng ofstream • Lớp ifstream và lớp ofstream – Định nghĩa trong thư viện – Đặt tên trong không gian tên std DTH INT2202
- Thư viện đọc/ghi tệp • Để cho phép cả đọc tệp và ghi tệp trong chương trình: #include using namespace std; hoặc #include using std::ifstream; using std::ofstream; DTH INT2202
- Khai báo luồng • Phải khai báo luồng như ta làm với tất cả các biến class khác: ifstream inStream; ofstream outStream; • Sau đó phải kết nối nó với tệp: inStream.open("infile.txt"); – Gọi là mở tệp – Dùng hàm thành viên open – Có thể dùng đường dẫn đầy đủ DTH INT2202
- Sử dụng luồng • Sau khi khai báo ta có thể sử dụng nó int oneNumber, anotherNumber; inStream >> oneNumber >> anotherNumber; • Tương tự với luồng xuất: ofstream outStream; outStream.open("outfile.txt"); outStream
- Tên tệp • Chương trình và tệp • Tệp có 2 tên trong chương trình của ta – Tên tệp ngoài • Còn gọi là tên tệp vật lý • Ví dụ "infile.txt" • Đôi khi được gọi là tên tệp thực sự • Chỉ dùng 1 lần duy nhất trong chương trình (để mở tệp) – Tên luồng • Còn gọi là tên tệp logic • Chương trình dùng tên này cho tất cả các hoạt động trên tệp DTH INT2202
- Đóng tệp • Nên đóng tệp – khi chương trình hoàn thành đọc dữ liệu từ tệp hoặc ghi dữ liệu ra tệp – Lệnh đóng tệp sẽ ngắt kết nối giữa luồng và tệp – Đóng tệp cho ví dụ trước: inStream.close(); outStream.close(); • Không đối số • Tệp tự động đóng khi chương trình kết thúc DTH INT2202
- flush cho tệp • Dữ liệu xuất thường được "buffered" – Lưu lại tạm thời trước khi ghi vào tệp – Ghi theo nhóm • Đôi khi cần ép ghi: outStream.flush(); – Hàm thành viên flush có thể áp dụng cho tất cả các luồng xuất – Dữ liệu xuất bị buffered sẽ được ghi thực sự • Lệnh đóng tệp sẽ tự động gọi tới flush() DTH INT2202
- Ví dụ tệp: Display 12.1 Đọc/ghi đơn giản trên tệp (1/2) DTH INT2202
- Ví dụ tệp: Display 12.1 Đọc/ghi đơn giản trên tệp (2/2) DTH INT2202
- Nối vào một tệp • Thao tác mở tệp chuẩn bắt đầu với tệp rỗng – Nếu tệp có dữ liệu trước khi mở thì toàn bộ dữ liệu sẽ bị xóa • Mở để ghi nối: ofstream outStream; outStream.open("important.txt", ios::app); – Nếu tệp không tồn tại tạo tệp – Nếu tệp tồn tại ghi nối vào cuối tệp – Đối số thứ 2 là hằng định nghĩa sẵn cho lớp ios • Trong thư viện , không gian tên std DTH INT2202
- Cú pháp khác để mở tệp • Có thể chỉ định tên tệp khi khai báo – Truyền đối số (là tên tệp) cho hàm kiến tạo • ifstream inStream; inStream.open("infile.txt"); tương đương với: ifstream inStream("infile.txt"); DTH INT2202
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình nâng cao với Java
170 p | 98 | 14
-
Bài giảng Lập trình nâng cao: Giới thiệu môn học - Trần Quốc Long
16 p | 74 | 7
-
Bài giảng Lập trình nâng cao: Hàm - Trần Quốc Long
34 p | 63 | 6
-
Bài giảng Lập trình nâng cao: Phát triển chương trình - Trần Quốc Long
38 p | 78 | 6
-
Bài giảng Lập trình nâng cao: Hoạt hình, tách file - Trần Quốc Long
28 p | 66 | 6
-
Bài giảng Lập trình nâng cao: Hướng đối tượng - Nguyễn Thị Tú Mi
117 p | 65 | 5
-
Bài giảng Lập trình nâng cao: Bài 7 - Lý Anh Tuấn
33 p | 67 | 5
-
Bài giảng Lập trình nâng cao: Tìm kiếm và đếm - Trần Quốc Long
54 p | 70 | 5
-
Bài giảng Lập trình nâng cao - Chương 0: Giới thiệu môn học
6 p | 80 | 4
-
Bài giảng Lập trình nâng cao: Bài 6 - Lý Anh Tuấn
28 p | 48 | 4
-
Bài giảng Lập trình nâng cao: Bài 4+5+6 - Trương Xuân Nam
25 p | 34 | 4
-
Bài giảng Lập trình nâng cao: Bài 0 - Hoàng Thị Điệp
7 p | 83 | 3
-
Bài giảng Lập trình nâng cao: Chương 5 - Lý Anh Tuấn
54 p | 27 | 2
-
Bài giảng Lập trình nâng cao: Chương 1 - Lý Anh Tuấn
26 p | 35 | 2
-
Bài giảng Lập trình nâng cao - Chương 0: Giới thiệu môn học, Warm up Game over
16 p | 5 | 1
-
Bài giảng Lập trình nâng cao - Chương 1: Simple Calculator (Ôn tập)
18 p | 5 | 1
-
Bài giảng Lập trình nâng cao - Chương 2: Game Guess it (Hàm)
34 p | 4 | 1
-
Bài giảng Lập trình nâng cao - Chương 3: Game Hangman (Phát triển chương trình)
38 p | 8 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn