Hướng đối tượng - Các dòng nhập xuất
Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyI. Sử dụng dòng chuẩn cho việc nhập xuấtI. Sử dụng dòng chuẩn cho việc nhập xuấtCác lớp của thư viện Các lớp của thư viện iostream.h quan niệm dữ iostream.h quan niệm dữ liệu đi từ chương trình liệu đi từ chương trình (các biến) đến một thiết bị (các biến) đến một thiết bị (ví dụ: màn hình, file) (ví dụ: màn hình, file) hoặc ngược lại như một hoặc ngược lại như một dòng (stream). Khái niệm dòng (stream). Khái niệm này cho phép đóng gói này cho phép đóng gói (encapsulation) các tác vụ (encapsulation) các tác vụ liên quan đến nhập xuất liên quan đến nhập xuất thông tin.thông tin. Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyI. Sử dụng dòng chuẩn cho việc nhập xuấtI. Sử dụng dòng chuẩn cho việc nhập xuấtCác tác vụ liên quan Các tác vụ liên quan đến ghi đĩa tốn rất đến ghi đĩa tốn rất nhiều thời gian vì vậy nhiều thời gian vì vậy các tác vụ này các tác vụ này thường phải cần đến thường phải cần đến bộ nhớ đệm (buffer) bộ nhớ đệm (buffer) dữ liệu trước khi ghi dữ liệu trước khi ghi trực tiếp lên đĩa.trực tiếp lên đĩa.1. Đổ đầy buffer2. Cho chảy đến đĩa3. Lại đổ vào buffer4. Cho chảy đến đĩa Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyI. Sử dụng dòng chuẩn cho việc nhập xuấtI. Sử dụng dòng chuẩn cho việc nhập xuấtCác lớp: Các lớp: istream ostreamiostreamstreambufiosfstreamLớp cơ sở cho các lớp dòng nhập xuất, lớp này có một biến thành phần thuộc lớp streambuf.Quản lí buffer: fill, empty, flush và các thao tác khác về buffer. Chuyên trách các tác vụ liên quan đến dòng xuất Cung cấp các phương thức nhập/ xuất màn hình. Cung cấp các phương thức nhập/xuất file. Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyCác đối tượng nhập xuất chuẩn.Các đối tượng nhập xuất chuẩn.Khi chương trình C++ có include <iostream.h> Khi chương trình C++ có include <iostream.h> khởi đầu thì bốn đối tượng sau được khởi tạo: khởi đầu thì bốn đối tượng sau được khởi tạo: cin (đọc "see-in") quản các dòng nhập từ thiết bị nhập chuẩn (bàn phím). cout (đọc "see-out") quản các dòng xuất ra thiết bị xuất chuẩn (màn hình). cerr (đọc "see-err") quản việc xuất ra thiết bị lỗi chuẩn (màn hình) đối với kết xuất không sử dụng buffer. Mọi thứ gởi đến cerr đều được ghi lên thiết bị lỗi ngay tức khắc (không cần chờ lệnh Fill hoặc Flush buffer). clog (đọc "see-log") quản các dòng thông báo cần được buffer ra thiết bị lỗi chuẩn. Thông thường việc này được định hướng lại (redirected) ra file log. Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyII. Nhập xuất với dữ liệu chuẩn.II. Nhập xuất với dữ liệu chuẩn.cout : Để kết xuất trên dòng chuẩn ta dùng cout : Để kết xuất trên dòng chuẩn ta dùng toán tử chuyển trái cấp bit <<toán tử chuyển trái cấp bit <<Cú pháp:Cú pháp: cout << variable;cin: Để nhập trên dòng chuẩn ta dùng cin: Để nhập trên dòng chuẩn ta dùng toán tử chuyển phải cấp bit >>toán tử chuyển phải cấp bit >>Cú pháp: Cú pháp: cin >> variable;ĐỂ ĐỊNH DẠNG KẾT XUẤT CẦN DÙNG CẦN DÙNG CÁC HÀM ĐIỀU TÁC (MANIPULATE FUNCTION) THUỘC <iomanip.h>. XIN XEM THÊM CÁC TÀI LIỆU VỀ IOMANIP Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyCác vấn đề với chuỗi trên dòng nhập xuất.Các vấn đề với chuỗi trên dòng nhập xuất.cin có thể làm việc với tham số con trỏ kí cin có thể làm việc với tham số con trỏ kí tự (char*) :tự (char*) :char HoTen[50] ;cout << “Xin nhap ho ten: "; cin >> HoTen; Giả sử nhập LeHung thì biến HoTen sẽ Giả sử nhập LeHung thì biến HoTen sẽ được “đổ đầy vào” các kí tự L, e, H, u, n, được “đổ đầy vào” các kí tự L, e, H, u, n, g, \0. g, \0. Cuối cùng là kí tự nullCuối cùng là kí tự null Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyCác vấn đề với chuỗi trên dòng nhập xuất.Các vấn đề với chuỗi trên dòng nhập xuất.Có một vấn đề là cin xem khoảng trắng như một Có một vấn đề là cin xem khoảng trắng như một toán tử tách (separator), vì vậy nó sẽ đặt ngay kí toán tử tách (separator), vì vậy nó sẽ đặt ngay kí tự null vào buffer ngay khi gặp kí tự này (việc tự null vào buffer ngay khi gặp kí tự này (việc nhập chuỗi vì vậy là nhập chuỗi vì vậy là chấm dứtchấm dứt!).!).#include <iostream.h>int main(){char HoTen[50];cout << “Xin nhap ho ten: ";cin >> HoTen;cout << “Ho ten la: " << HoTen << endl;cout << “Xin nhap day du ho ten: ";cin >> HoTen;cout << “Ho va ten day du la: " << HoTen << endl;return 0; } Xin nhap ho ten: LeHungHo ten la: LeHungXin nhap day du ho ten: Le HungHo va ten day du la: Le Phân tích vấn đề Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu này#include <iostream.h>int main(){int myInt; long myLong; double myDouble; float myFloat; unsigned int myUnsigned; char myWord[50];cout << "int: "; cin >> myInt;cout << "Long: "; cin >> myLong;cout << "Double: "; cin >> myDouble;cout << "Float: "; cin >> myFloat;cout << "Word: "; cin >> myWord;cout << "Unsigned: "; cin >> myUnsigned;cout << "\n\nInt:\t" << myInt << endl;cout << "Long:\t" << myLong << endl;cout << "Double:\t" << myDouble << endl;cout << "Float:\t" << myFloat << endl;cout << "Word: \t" << myWord << endl; cout << "Unsigned:\t" << myUnsigned << endl;cout << "\n\nInt, Long, Double, Float, Word, Unsigned: \n";cin >> myInt >> myLong >> myDouble;cin >> myFloat >> myWord >> myUnsigned;cout << "\n\nInt:\t" << myInt << endl;cout << "Long:\t" << myLong << endl;cout << "Double:\t" << myDouble << endl; cout << "Float:\t" << myFloat << endl;cout << "Word: \t" << myWord << endl; 42:cout << "Unsigned:\t" << myUnsigned << endl;return 0; } Một trường hợp chạy chương trìnhint: 2 Long: 30303 Double: 393939397834 Float: 3.33 Word: Hello Unsigned: 85 Int: 2Long: 30303 Double: 3.93939e+11 Float: 3.33 Word: Hello Unsigned: 85 Int, Long, Double, Float, Word, Unsigned: 3 304938 393847473 6.66 bye -2Int: 3 Long: 304938 Double: 3.93847e+08 Float: 6.66 Word: bye Unsigned: 65534 Nếu không xem khoảng trắng này là kết thúc dòng myWord thì sẽ gặp nhầm lẫn Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàySử dụng cin với mãng kí tự (chuỗi).Sử dụng cin với mãng kí tự (chuỗi).Using get() with a character array#include <iostream.h>int main() {char stringOne[256];char stringTwo[256];cout << "Enter string one: ";cin.get(stringOne,256);cout << "stringOne: " << stringOne << endl;cout << "Enter string two: ";cin >> stringTwo;cout << "StringTwo: " << stringTwo << endl;return 0;} Kết xuất: Enter string one: Now is the time stringOne: Now is the timeEnter string two: For all good StringTwo: For Các dòng nhập xuấtSinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16)Cũng nên làm đầy đủ các bài tập trong tài liệu nàyV. Dòng nhập xuất tập tin.V. Dòng nhập xuất tập tin.C++ hỗ trợ các lớp sau cho nhập xuất C++ hỗ trợ các lớp sau cho nhập xuất files: files: ofstream:: dùng cho các tác vụ ghi files (dẫn dùng cho các tác vụ ghi files (dẫn xuất từ ostream) xuất từ ostream) ifstream:: dùng cho các tác vụ đọc files (dẫn dùng cho các tác vụ đọc files (dẫn xuất từ istream) xuất từ istream) fstream: dùng cho cả đọc và ghi files: dùng cho cả đọc và ghi files (dẫn (dẫn xuất từ iostream) xuất từ iostream) [...]... làm đầy đủ các bài tập trong tài liệu này Các dòng nhập xuất I Sử dụng dòng chuẩn cho việc nhập xuất Các toán tử “” cho phép định hướng lại dòng nhập xuất đến một thiết bị khác thiết bị chuẩn Sinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16) Cũng nên làm đầy đủ các bài tập trong tài liệu này Các dòng nhập xuất III Sử dụng dòng nhập xuất chuẩn với các lớp mới... trường hợp các hàm kể trên trả về true Để reset các cờ trạng thái dùng hàm clear(), không cần tham số nào chuyển giao cho hàm Sinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16) Cũng nên làm đầy đủ các bài tập trong tài liệu này Các dòng nhập xuất Con trỏ dòng nhập xuất file con trỏ dòng get và put Mọi đối tượng dòng nhập xuất đều có ít nhất một con trỏ dòng: ifstream,... làm đầy đủ các bài tập trong tài liệu này Các dòng nhập xuất IV Lọc dữ liệu trích từ dòng Sinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16) Cũng nên làm đầy đủ các bài tập trong tài liệu này Các dòng nhập xuất VI Dòng nhập xuất định dạng trong bộ nhớ Sinh viên cần nghiên cứu thêm, đầy đủ trong: Teach Yourself C++ in 21 days (Day 16) Cũng nên làm đầy đủ các bài tập... . trỏ dòng nhập xuất fileCon trỏ dòng nhập xuất filecon trỏ dòng con trỏ dòng get và và putMọi đối tượng dòng nhập xuất đều có ít nhất một con trỏ dòng: Mọi. đủ các bài tập trong tài liệu nàyIII. Sử dụng dòng nhập xuất chuẩn với các lớp III. Sử dụng dòng nhập xuất chuẩn với các lớp mới.mới. Các dòng nhập xuấtSinh