Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 87 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
87
Dung lượng
279,97 KB
Nội dung
Chương Các dòng tin (Stream) C đà cung cấp thư viện hàm nhập xuất printf, scanf, gets, getch(), puts, puch(), fprintf, fscanf, fopen, fwite, fread, Các hàm làm việc hiệu không thích ứng với cách tổ chức chương trình hướng đối tượng C++ sử dụng khái niệm dòng tin (stream) đưa lớp dòng tin để tổ chức viƯc nhËp xt Dßng tin cã thĨ xem nh mét dẫy byte Thao tác nhập lấy (đọc) byte từ dòng tin (khi gọi dòng nhập - input) vào nhớ Thao tác xuất đưa byte từ nhớ dòng tin (khi gọi dong xuất - output) Các thao tác độc lập thiết bị Để thực việc nhập, xuất lên thiết bị cụ thể, cần gắn dòng tin với thiết bị Đ Các lớp stream Có lớp quan trọng cần nhớ là: + Lớp sở ios + Từ lớp ios dẫn xuất đến lớp istream ostream + Hai lớp istream ostream lại dẫn xuất tới lớp iostream Sơ đồ kế thừa lớp sau: ios ostrea m istream iostre am Líp ios + Thuéc tÝnh lớp: Trong lớp ios định nghĩa thuộc tính sử dụng làm cờ định dạng cho việc nhập xuất cờ kiểm tra lỗi (xem bên dưới) + Các phương thức: Lớp ios cung cấp số phương thức phục vụ việc định dạng liệu nhập xuất, kiểm tra lỗi 364 (xem bên dưới) Lớp istream Lớp cung cấp toán tử nhập >> nhiều phương thức nhập khác (xem bên dưới) ph¬ng thøc: get, getline, read, ignore, peek, seekg, tellg, Lớp ostream Lớp cung cấp toán tử xuất > phương thức nhập lớp ios istream Cách dùng toán tử nhập để đọc liệu từ dòng cin sau: cin >> Tham_số ; Trong Tham_số là: - Biến phần tử mảng nguyên để nhận số nguyên - Biến phần tử mảng thực để nhận số thực - Biến phần tử mảng ký tự để nhËn mét ký tù - Con trá ký tù ®Ĩ nhËn mét dÉy c¸c ký tù kh¸c trèng Chó ý: Các toán tử nhập viết nối đuôi để nhập nhiều giá trị dòng lệnh sau: cin >> Tham_sè_1 >> Tham_sè_2 >> >> Tham_sè_k ; C¸ch thøc nhËp nh sau: Bá qua c¸c ký tù trắng (dấu cách, dấu tab, dấu chuyển dòng) đứng trước có sau đọc vào ký tự tương ứng với kiểu yêu cầu Cụ thể tõng kiĨu nh sau: Khi nhËp sè nguyªn sÏ bá qua ký tự trắng đứng trước có, sau bắt đầu nhận ký tự biểu thị số nguyên Việc nhập kết thúc gặp ký tự trắng ký tự hiểu thành phần số nguyên Ví dụ dòng vào (gõ từ bàn phím) chứa ký tự 123X2 Tham_số (bên phải cin) biến nguyên n n nhận giá trị 123 Con trỏ nhập dừng t¹i ký tù X PhÐp nhËp mét sè thùc cịng tiến hành tương tự: Bỏ qua khoảng trắng đứng trước có, sau bắt đầu nhận ký tù biĨu thÞ sè Thùc ViƯc nhËp kÕt thóc gặp ký tự trắng ký tự hiểu thành phần số thực Phép nhập ký tự vậy: Bỏ qua khoảng trắng ®øng tríc nÕu cã, sau ®ã nhËn mét ký tù khác ký tự trắng Ví dụ gõ XY ký tự X nhận trỏ nhập dừng t¹i ký tù Y PhÐp nhËp mét dÉy ký tù: Bỏ qua khoảng trắng đứng trước có, sau bắt đầu nhận từ ký tự khác ký tự trắng Việc nhập kết thúc gặp ký tự trắng Ví dụ 1: Xét đoạn chương trình: char ten[10], que[12]; char ch; int n; float x; cin >> n >> x >> ch >> ten >> que ; Nếu gõ ký tự: 1233.14ZHONGHAIPHONG (để cho gọn ký hiệu ) kết nhập sau: 366 n=123 x=3.14 ch=’Z’ ten=”HONG” que = “HAI” Con trá nhËp sÏ dõng t¹i ký tù tríc tõ PHONG Các ký tự lại nhận câu lệnh nhập Ví dụ 2: Xét đoạn chương trình: int m; float y; cin >> m >> y; Nếu gõ: 4564.5 kết nhập là: m = 456 y = 4.5 Ký tù vÉn lại dòng nhập Đ Nhập ký tự chuỗi ký tự từ bàn phím Chúng ta nhận thấy toán tử nhập >> tiện lợi dùng để nhập giá trị số (nguyên, thực) Để nhập ký tự chuỗi ký tự nên dùng phương thức sau (định nghĩa lớp istream): cin.get cin.getline cin.ignore 3.1 Phương thức get có dạng (thực chất có phương thức có tên get): Dạng 1: int cin.get() ; dùng để đọc ký tự (kể khoảng trắng) Cách thức đọc cin.get minh hoạ qua ví dụ sau: Xét câu lệnh char ch; ch = cin.get() + NÕu gâ ABC th× biÕn ch nhËn m· ký tù A, c¸c ký tù BC lại dòng vào + Nếu gõ A biÕn ch nhËn m· ký tù A, ký tù lại dòng vào + Nếu gõ biÕn ch nhËn m· ký tù (b»ng 10) vµ dòng vào rỗng Dạng 2: istream& cin.get(char &ch) ; dùng để đọc ký tự (kể khoảng trắng) đặt vào biến kiểu char tham chiếu ch Chú ý: + Cách thức đọc cin.get dạng cịng gièng nh d¹ng + Do cin.get() d¹ng trả tham chiếu tới cin, nên sử dụng phương thức get() dạng nối đuôi VÝ dơ nÕu khai b¸o char ch1, ch2; câu lệnh: cin.get(ch1); cin.get(ch2); viết chung câu lệnh sau: cin.get(ch1).get(ch2); Dạng 3: istream& cin.get(char *str, int n, char delim = ‘\n’); 368 dïng ®Ĩ đọc dẫy ký tự (kể khoảng trắng) đưa vào vùng nhớ str trỏ tới Quá trình ®äc kÕt thóc xÈy mét t×nh sau: + Gặp ký tự giới hạn (cho delim) Ký tự giới hạn mặc định \n (Enter) + Đà nhận đủ (n-1) ký tự Chú ý: + Ký tự kết thúc chuỗi \0 bổ sung vào dẫy ký tự nhận + ký tự giới hạn lại dòng nhập để dành cho lƯnh nhËp tiÕp theo Chó ý: + Cịng gièng nh get() dạng 2, viết phương thức get() dạng nối đuôi dòng lệnh + Ký tự lại dòng nhập làm trôi phương thức get() dạng Ví dụ xét đoạn chương trình: char ht[25], qq[20], cq[30]; cout