Tải bản đầy đủ (.ppt) (21 trang)

Hướng đối tượng - Các dòng nhập xuất

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.6 MB, 21 trang )

Các dòng nhập xuất
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
I. Sử dụng dòng chuẩn cho việc nhập xuất
I. Sử dụng dòng chuẩn cho việc nhập xuất

Cá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ất
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


I. Sử dụng dòng chuẩn cho việc nhập xuất
I. Sử dụng dòng chuẩn cho việc nhập xuất

Cá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 buffer
2. Cho chảy đến đĩa
3. Lại đổ vào buffer
4. Cho chảy đến đĩa
Các dòng nhập xuất
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
I. Sử dụng dòng chuẩn cho việc nhập xuất
I. Sử dụng dòng chuẩn cho việc nhập xuất

Các lớp:

Các lớp:
istream ostream
iostream
streambuf
ios
fstream
Lớ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ất
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 đố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ất
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
II. 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ất
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 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ự null
Cuối cùng là kí tự null
.
.
Các dòng nhập xuất

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 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ứt
chấ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: LeHung
Ho ten la: LeHung
Xin nhap day du ho ten: Le Hung

Ho va ten day du la: Le

Phân tích vấn đề
Các dòng nhập xuất
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
#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ình
int: 2
Long: 30303
Double: 393939397834
Float: 3.33
Word: Hello
Unsigned: 85
Int: 2
Long: 30303
Double: 3.93939e+11
Float: 3.33
Word: Hello
Unsigned: 85
Int, Long, Double, Float, Word, Unsigned:
3 304938 393847473 6.66 bye -2
Int: 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

×