Phƣơng thức nhập xâu (#include <iostream.h>)

Một phần của tài liệu Bài Giảng Kỹ Thuật Lập Trình (Trang 101)

Do toán tử nhập >> có hạn chế đối với xâu kí tự nên C++ đưa ra hàm riêng (còn gọi là phương thức) cin.getline(s,n) để nhập xâu kí tự. Hàm có 2 đối với s là xâu cần nhập nội dung và n-1 là số kí tự tối đa của xâu. Giống phương thức nhập kí tự cin.get(c), khi gặp hàm cin.getline(s,n) chương trình sẽ nhìn vào bộ đệm bàn phím lấy ra n-1 kí tự (nếu đủ hoặc lấy tất cả kí tự còn lại, trừ kí tự enter) và gán cho s. Nếu tại thời điểm đó bộ đệm đang rỗng, chương trình sẽ tạm dừng chờ NSD nhập dữ liệu (dãy kí tự) vào từ bàn phím. NSD có thể nhập vào dãy với độ dài bất kỳ cho đến khi nhấn Enter, chương trình sẽ lấy ra n-1 kí tự đầu tiên gán cho s, phần còn lại vẫn được lưu trong bộ đệm (kể cả kí tự Enter) để dùng cho lần nhập sau. Hiển nhiên, sau khi gán các kí tự cho s, chương trình sẽ tự động đặt kí tự kết thúc xâu vào ô tiếp theo của xâu s.

Ví dụ 1 : Xét đoạn lệnh sau char s[10] ; cin.getline(s, 10) ; cout << s << endl ; cin.getline(s, 10) ; cout << s << endl ;

Giả sử ta nhập vào bàn phím dòng kí tự: 1234567890abcd↵. Khi đó lệnh cin.getline(s,10) đầu tiên sẽ gán xâu "123456789" (9 kí tự) cho s, phần còn lại vẫn lưu trong bộ đệm bàn phím. Tiếp theo s được in ra màn hình. Đến lệnh cin.getline(s,10) thứ hai NSD không phải nhập thêm dữ liệu, chương trình tự động lấy nốt số dữ liệu còn lại (vì chưa đủ 9 kí tự) "0abcd" để gán cho s. Sau đó in ra màn hình. Như vậy trên màn hình sẽ xuất hiện hai dòng:

123456789 0abcd

Ví dụ 2 : Nhập một ngày tháng dạng Mỹ (mm/dd/yy), đổi sang ngày tháng dạng Việt Nam rồi in ra màn hình.

#include <iostream.h> main()

{

char US[9], VN[9] = " / / " ; // khởi tạo trước hai dấu / cin.getline(US, 9) ; // nhập ngày tháng, ví dụ "05/01/99" VN[0] = US[3]; VN[1] = US[4] ; // ngày

VN[3] = US[0]; VN[4] = US[1] ; // tháng VN[6] = US[6]; VN[7] = US[7] ; // năm cout << VN << endl ;

}

Trong C để nhập xâu ký tự ta có thể xử dụng hàm gets(st) để nhập xâu ký tự st, hàm này cho phép nhập xâu st từ bàn phím. Hàm gets thuộc thư viện stdio.h. Trước khi sử dụng hàm này ta phải làm sạch bộ đệm bàn phím bằng hàm fflush(stdin).

Ví dụ: Xây dựng chương trình nhập họ tên của một sinh viên, in xâu đó ra màn hình #include<iostream.h> #include<stdio.h> void main() { char name[30];

cout<<"Nhap ho ten sv: "; fflush(stdin); gets(name);

cout<<"Ho ten SV vua nhap: "<<name; }

Một phần của tài liệu Bài Giảng Kỹ Thuật Lập Trình (Trang 101)