Bài giảng Tin học đại cương - Bài 7: Xâu ký tự - Phạm Xuân Cường

TIN HỌC ĐẠI CƯƠNG  
BÀI 7: XÂU KÝ TỰ  
Phạm Xuân Cường  
Khoa Công nghệ thông tin  
Nội dung bài giảng  
1. Xâu ký tự  
2. Truy nhập các ký tự trong xâu  
3. Một số hàm xâu và ký tự tiện lợi  
•
•
•
•
•
Ghép xâu  
Xóa xâu con  
Chèn xâu con  
Truy nhập xâu con  
Tìm xâu con  
1
Xâu ký tự  
Xâu ký tự  
• Xâu (chuỗi) ký tự, gọi tắt là xâu (chuỗi):  
Là một dãy ký tự liên tiếp, tạo bởi các chữ cái, chữ số, ký  
hiệu (+, -, &, !, . . . ) và dấu trắng (dấu cách, dấu xuống  
dòng,. . . )  
• Xâu phải được đặt giữa hai dấu nháy kép ". . . "  
"Xin chao moi nguoi!"  
• Xâu có thể rỗng ("") hoặc chỉ có một ký tự  
Xâu "A" khác với ký tự ’A’  
string s1 = "A"; // OK  
string s2 = ’A’; // Lỗi  
2
Lớp string trong thư viện chuẩn C++  
• Lớp string biểu diễn kiểu dữ liệu xâu ký tự  
- cho phép khai báo biến để lưu trữ xâu ký tự  
- hỗ trợ các thao tác xử lý xâu thuận tiện  
• Cần khai báo tệp tiêu đề string:  
#include <string>  
3
Khai báo và khởi tạo biến xâu  
• Khai báo:  
string s1;  
• Khai báo kết hợp khởi tạo:  
string s1 = "Day la mot xau ky tu";  
• Khai báo và khởi tạo riêng biệt:  
string s1; // khai báo  
s1 = "Chuc vui ve!"; // khởi tạo  
4
Nhập và in xâu  
#include <iostream>  
#include <string>  
using namespace std;  
int main()  
{
string s;  
cout << "Nhap mot xau ky tu: ";  
getline(cin, s); // ham getline cho phep nhap  
// xau chua dau cach  
cout << "Xau vua nhap la: " << s << endl;  
return 0;  
}
5
Truy nhập các ký tự trong xâu  
Truy nhập các ký tự trong xâu  
• Các ký tự trong xâu được lưu trữ vào các ô nhớ liên tiếp nhau  
và được đánh số thứ tự (chỉ số) từ 0  
string s = "Xin chao!";  
0 1 2 3 4 5 6 7 8  
x i n  
c h a o !  
• Các ký tự trong xâu được truy nhập bằng chỉ số  
char c = s[6]; // Gán ký tự ở vị trí 6 cho biến ký tự c.  
cout << c; // Sẽ in ra "a".  
cout << s[0]; // Sẽ in ra "X".  
6
Truy nhập các ký tự trong xâu  
• Có thể thay đổi ký tự ở một vị trí trong xâu bằng phép gán  
0 1 2 3 4 5 6 7 8  
X i n  
c h a o !  
s[1] = ’I’; // ’i’ sẽ được thay bằng ’I’  
s[2] = ’N’; // ’n’ sẽ được thay bằng ’N’  
cout << s; // Sẽ in ra "XIN chao!"  
• Chú ý: Chỉ được gán ký tự cho mỗi vị trí trong xâu  
s[4] = ’P’; // OK  
s[5] = "Q"; // Lỗi  
7
Một số hàm xâu và ký tự tiện lợi  
Một số hàm xâu và ký tự tiện lợi  
• Hàm size trả về kích thước của xâu  
string s = "Xin chao!";  
cout << s.size(); // Sẽ in ra "9"  
• Các hàm sau đây được khai báo trong tệp tiêu đề cctype  
(khác với hàm size, chúng là những hàm độc lập và không  
thuộc lớp string)  
- Hàm toupper(c) trả về ký tự hoa ứng với ký tự c  
- Hàm tolower(c) trả về ký tự thường ứng với ký tự c  
char c1 = toupper(’a’); // c1 = ’A’  
char c2 = tolower(’B’); // c2 = ’b’  
char c3 = toupper(’E’); // c3 = ’E’  
8
Nhập xâu, hiển thị mỗi ký tự trong xâu trên một dòng  
#include <iostream>  
using namespace std;  
int main()  
{
int n;  
string s;  
cout << "Nhap mot xau ky tu: ";  
getline(cin, s);  
for (int i = 0; i < s.size() ; i++)  
cout << s[i] << endl; // in s[i] tren mot dong  
return 0;  
}
9
Nhập xâu, hiển thị xâu chữ hoa tương ứng lên màn hình  
#include <iostream>  
#include <string>  
#include <cctype>  
using namespace std;  
int main()  
{
string s;  
cout << "Nhap mot xau ky tu: ";  
getline(cin, s);  
for (int i = 0; i < s.size(); i++) {  
char c = toupper(s[i]) ;  
cout << c;  
}
return 0;  
}
10  
Ghép xâu  
• Dùng phương thức append  
string s1 = "Good";  
string s2 = "morning!";  
s1.append(s2); // s1 = "Goodmorning!"  
• Cũng có thể dùng toán tử + hoặc += thay cho append  
s1 = s1 + " " + s2; // s1 = "Good morning!"  
s1 = ""; // s1 trở thành xâu rỗng  
s1 += s2; // s1 = "morning!"  
• Dùng phương thức push_back để thêm một ký tự vào cuối  
xâu  
string s3 = "Hi";  
s3.push_back(’!’); // s3 = "Hi!"  
11  
Viết hàm có một tham số kiểu xâu và trả về xâu chữ thường  
tương ứng  
#include <iostream>  
#include <string>  
#include <cctype>  
using namespace std;  
string chu_thuong(string s)  
{
string s2 = ""; // s2 se chua xau chu thuong  
for (int i = 0; i < s.size(); i++)  
s2.push_back(tolower(s[i]));  
return s2;  
}
int main()  
{
string s1, s2;  
cout << "Nhap mot xau ky tu: ";  
getline(cin, s1);  
s2 = chu_thuong(s1);  
cout << "Xau chu thuong tuong ung la: " << s2;  
return 0;  
12  
}
Xóa xâu con  
• Dùng phương thức erase(pos, len)  
- pos: vị trí bắt đầu cắt bỏ (tính từ 0)  
- len: số ký tự muốn cắt bỏ  
• Ví dụ:  
string s = "Lap trinh C++";  
cout << s; // Sẽ in ra "Lap trinh C++"  
s.erase(0, 10); // Cắt bỏ xâu con "Lap trinh "  
cout << s; // Sẽ in ra "C++"  
13  
Chèn xâu con  
• Dùng phương thức s1.insert(pos, s2)  
- pos: vị trí bắt đầu chèn (tính từ 0)  
- s2: xâu con để chèn vào xâu s1  
• Ví dụ: string s = "ABEF";  
cout << s; // Sẽ in ra ABEF  
s.insert(2, "CD"); // Chèn CD vào giữa AB và EF  
cout << s; // Sẽ in ra ABCDEF  
14  
Truy nhập xâu con  
• Dùng phương thức substr(pos, len)  
- Trả về xâu con dài len ký tự, bắt đầu từ vị trí pos (tính từ 0)  
• Ví dụ:  
string truong = "Dai hoc Thuy Loi";  
string s = truong.substr(8, 8);  
cout << s; // Sẽ in ra "Thuy Loi"  
15  
Tìm xâu con  
• Dùng phương thức s1.find(s2) để tìm xâu con s2 trong xâu s1  
- Trả về vị trí đầu tiên của s2 trong s1  
- Nếu không tìm thấy, trả về -1  
• Ví dụ:  
string truong = "Dai hoc Thuy Loi";  
int k1 = truong.find("hoc");  
cout << k1; // Sẽ in ra 4  
int k2 = truong.find("Hoc");  
cout << k2; // Sẽ in ra -1 vì không tìm thấy "Hoc"  
16  
Tải về để xem bản đầy đủ
pdf 23 trang baolam 19180 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 7: Xâu ký tự - Phạm Xuân Cường", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_7_xau_ky_tu_pham_xuan_cuong.pdf