Bài giảng Tin học đại cương - Bài 7: Xâu ký tự - Phạm Xuân Cường
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 đủ
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:
bai_giang_tin_hoc_dai_cuong_bai_7_xau_ky_tu_pham_xuan_cuong.pdf

