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
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
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:
- bai_giang_gioi_thieu_lap_trinh_chuong_8_luong_du_lieu_va_tep.pdf