[r]
Trang 1Giới Thiệu Lập Trình
Xâu Ký Tự
TS Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN
Trang 2Nội Dung
Mảng ký tự (thư viện cstring )
Lớp string
Trang 3Xâu Ký Tự cstring
Mảng dữ liệu kiểu char
Mỗi ký tự là một phần tử trong mảng
Thêm 1 ký tự cuối cùng: '\0' (ký tự null)
Đánh dấu kết thúc xâu
Ví dụ:
Xâu "hello" lưu dưới dạng cstring
Khai báo char s[10];, s lưu 9 ký tự và '\0'
Lưu xâu sử dụng mảng không đầy:
Khai báo một mảng “đủ lớn” để lưu xâu
Ký tự null ('\0') đánh dấu kết thúc xâu
Trang 4Xâu Ký Tự cstring – Ví Dụ
Khai báo char s[10];
Dùng s để lưu "hi you", s trông như sau
Khởi tạo char s[10] = "hi you";
s lưu "hi you", s trông như sau
Khởi tạo char s[] = "hi you";
s lưu "hi you", s trông như sau
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9]
'h' 'i' ' ' 'y' 'o' 'u' '\0' ? ? ?
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9]
'h' 'i' ' ' 'y' 'o' 'u' '\0' '\0' '\0' '\0'
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
Trang 5Xâu Ký Tự cstring – Ví Dụ
Khởi tạo char s[6] = "hi you";
Mảng s có 6 phần tử, dùng để lưu xâu có 6 ký tự,
thêm ký tự kết thúc xâu, 7 ký tự
Lỗi dịch: mảng s không đủ bộ nhớ để lưu xâu
Khởi tạo char s[] = "hi you";
s lưu "hi you", s trông như sau
Nếu gán s[6]='!';, s không có ký tự kết thúc xâu
Nếu gán s[2]='\0';, s có 2 ký tự kết thúc xâu
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
'h' 'i' ' ' 'y' 'o' 'u' '\0'
Trang 6Xâu Ký Tự cstring – Xuất
Có thể dùng cout để in ra xâu ký tự như các biến thuộc kiểu dữ liệu cơ bản
In ra đến khi nào gặp ký tự kết thúc xâu đầu tiên
Nếu không có ký tự kết thúc xâu
In hết các phần tử của mảng
Tiếp tục in ký tự ở các ô nhớ tiếp theo
Đế n khi nào gặp ký tự kết thúc xâu (giá trị 0 kiểu int)
cout << s;
In ra "hi"
cout << s;
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
'h' 'i' '\0' 'y' 'o' 'u' '\0'
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
Trang 7Xâu Ký Tự cstring – Nhập
Có thể dùng cin để nhập dữ liệu cho xâu ký
tự, đến khi gặp dấu cách thì dừng
Sử dụng getline để đọc cả ký tự dấu cách
char s[80];
cin.getline(s, 80);