4.2|
Cú pháp:
char <tên x}u>[độ dài]; // không khởi tạo char <tên x}u>[độ dài] = xâu kí tự; // có khởi tạo char <tên xâu>[] = xâu kí tự; // có khởi tạo Ví dụ:
char szHoTen1[30];
char szHoTen2[30] = “Nguyen Van A”; char szHoTen3[] = “Nguyen Van A”;
Các câu lệnh khai báo trên tạo ra các mảng ký tự có độ dài khác nhau. Cụ thể: Mảng szHoTen1 chiếm 30 byte chứa tối đa 29 ký tự.
-
Mảng szHoTen2 có độ dài tối đa 29 ký tự v{ được gán bằng chuỗi “Nguyen -
Van A”
Mảng szHoTen3 có độ dài bằng 13 do 12 phần tử của họ tên và một ký tự -
Tài liệu giảng dạy Trang 29 NHẬP, XUẤT CHUỖI 4.3| NHẬP CHUỖI 4.3.1| 4.3.1.1| Nhập chuỗi bằng cin và “>>” Cú pháp: cin >> tên_chuỗi Ví dụ:
/*Chương trình minh họa nhập chuỗi bằng cin >>*/
#include <iostream> using namespace std; int main()
{
char szHoten[20];
cout << "Nhap vao ho ten" << '\n'; cin >> szHoten;
cout << "Ho va ten = " << szHoten <<endl; system("pause");
return 0;
}
Kết quả như sau:
Trường hợp có khoảng trắng thì các ký tự phía sau khoảng trắng đầu tiên sẽ bị bỏ đi
4.3.1.2| Nhập chuỗi bằng cin.get()
Cách nhập chuỗi bằng cin v{ ‘>>’ có hạn chế là khơng nhập được dấu cách. Có thể dùng h{m cin.get() để nhập từ bàn phím chuỗi có chứa dấu cách
Tài liệu giảng dạy Trang 30
cin.get(tên biến chuỗi , số_ký tự_tố _đa_của_mảng)
Theo câu lệnh này máy sẽ thực hiện c|c bước tương tự cin >> nhưng cho phép đọc ký tự khoảng trắng vào phần tử của chuỗi.
Ví dụ:
/*Chương trình minh họa nhập chuỗi bằng cin .get()*/
#include <iostream> #include <conio.h> using namespace std; int main() { char szHoten[20];
cout << "Nhap vao ho ten" << "\n"; cin.get(szHoten,20);
cout << "Ho va ten = " << szHoten <<endl; system("pause");
return 0;
}
Kết quả ký tự trắng có thể được lưu v{o mảng::
Ví dụ sau minh họa trường hợp đoạn chương trình sử dụng nhiều lệnh cin.get() liên tiếp nhau gây nên hiện tượng trôi câu lệnh đọc chuỗi
#include <iostream> #include <conio.h> using namespace std; int main()
{
char szHoten1[20], szHoten2[20];
cout << "Nhap vao ho ten nguoi thu 1: " << "\n"; cin.get(szHoten1,20);
cout << "Nhap vao ho ten nguoi thu 2: " << "\n"; cin.get(szHoten2,20);
cout << "Hai ten vua nhap la = " << szHoten1<< " va "
<< szHoten2<< endl; system("pause");
return 0;
}
Tài liệu giảng dạy Trang 31
Để khắc phục tình trạng này ta dùng một trong hai cách là dùng hàm cin.ignore(1) để bỏ qua ký tự Enter hoặc dùng cin.get(c) để thu lấy ký tự enter.
4.3.1.3| Phương thức cin.ignore(1)
Thêm lệnh cin.ignore(1)sau mỗi lệnh cin.get()
#include <iostream> #include <conio.h> using namespace std; int main()
{
char szHoten1[20], szHoten2[20];
cout << "Nhap vao ho ten nguoi thu 1: " << "\n"; cin.get(szHoten1,20);
cin.ignore(1); //Bỏ qua ký tự Enter
cout << "Nhap vao ho ten nguoi thu 2: " << "\n"; cin.get(szHoten2,20);
cout << "Hai ten vua nhap la = " << szHoten1 << " va " << szHoten2<< endl;
system("pause");
return 0;
}
4.3.1.4| Phương thức cin.get(c)
Thêm lệnh cin.get(c)sau mỗi lệnh cin.get()
#include <iostream> #include <conio.h> using namespace std;
Tài liệu giảng dạy Trang 32
int main()
{
char szHoten1[20], szHoten2[20], c;
cout << "Nhap vao ho ten nguoi thu 1: " << "\n"; cin.get(szHoten1,20);
cin.get(c); //Bỏ qua ký tự Enter
cout << "Nhap vao ho ten nguoi thu 2: " << "\n"; cin.get(szHoten2,20);
cout << "Hai ten vua nhap la = " << szHoten1 << " va " << szHoten2<< endl; system("pause"); return 0; } Kết quả: 4.3.1.5| Nhập chuỗi bằng cin.getline() Cú pháp: cin.getline(tên_biến , chiều_dài_mảng) XUẤT CHUỖI 4.3.2|
Có thể xuất chuỗi bằng lệnh cout << hoặc puts(). Hàm puts