I. Chuỗi là gì?
Chuỗi (String) là dãy ký tự — ví dụ: "Xin chao", "Hello World", "C++".Trong C++, có 2 cách làm việc với chuỗi:
Kiểu truyền thống: dùng char[](chuỗi ký tự kiểu C)
Kiểu hiện đại: dùng lớp string(thuộc thư viện<string>)
II. Khai báo và gán chuỗi
Mã:
#include <iostream>
#include <string>
using namespace std;
int main() {
string ten = "Quan";
cout << "Xin chao " << ten << "!" << endl;
return 0;
}
Mã:
Xin chao Lorenzo!
III. Nhập chuỗi từ bàn phím
Nhập một từ:
Mã:
string ten;
cin >> ten;
Dừng lại khi gặp dấu cách.
Nhập nguyên cả dòng (bao gồm dấu cách):
Mã:
string cau;
getline(cin, cau);
Mã:
cout << "Nhap cau noi cua ban: ";
getline(cin, cau);
cout << "Ban da noi: " << cau;
IV. Các thao tác phổ biến với chuỗi
| Lệnh | Chức năng | Ví dụ |
|---|---|---|
s.length() | Độ dài chuỗi | "hello" → 5 |
s[0] | Lấy ký tự đầu | 'h' |
s + t | Nối chuỗi | "Hi " + "there" → "Hi there" |
s.substr(a, b) | Cắt chuỗi từ vị trí a, dài b ký tự | |
s.find("abc") | Tìm vị trí của chuỗi con | |
s.erase(a, b) | Xóa b ký tự từ vị trí a |
Mã:
string s = "Xin chao ban";
cout << "Do dai: " << s.length() << endl;
cout << "Ky tu dau: " << s[0] << endl;
cout << "Cat chuoi: " << s.substr(4, 4) << endl; // "chao"
V. Duyệt qua từng ký tự của chuỗi
Mã:
for (int i = 0; i < s.length(); i++) {
cout << s[i] << " ";
}
Mã:
for (char c : s) {
cout << c << " ";
}
VI. Ví dụ ứng dụng: kiểm tra chuỗi đối xứng (palindrome)
Chuỗi đối xứng là chuỗi đọc xuôi và ngược giống nhau.Ví dụ:
"level", "madam"
Mã:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cout << "Nhap chuoi: ";
getline(cin, s);
bool doiXung = true;
for (int i = 0; i < s.length() / 2; i++) {
if (s[i] != s[s.length() - 1 - i]) {
doiXung = false;
break;
}
}
if (doiXung) cout << "Chuoi doi xung!";
else cout << "Khong doi xung!";
}
Mã:
Nhap chuoi: madam
Chuoi doi xung!
VII. Hình minh họa
Mã:
Chuỗi: "HELLO"
Chỉ số: 0 1 2 3 4
Ký tự: H E L L O
![]()
s[0] = 'H',s[4] = 'O',s.length() = 5
VIII. Bài tập luyện tập
Bài 1:
Nhập 1 chuỗi → in ra độ dài và ký tự đầu tiên, ký tự cuối cùng.
Bài 2:
Nhập 2 chuỗi → nối chúng lại và in kết quả.
Bài 3:
Nhập 1 câu → đếm xem có bao nhiêu chữ “a”.
Bài 4 (nâng cao):
Nhập chuỗi → kiểm tra có phải palindrome hay không.
Tóm tắt Tiết 7
| Kiến thức | Ví dụ | Ghi chú |
|---|---|---|
| Khai báo chuỗi | string s; | Dùng <string> |
| Nhập chuỗi | getline(cin, s) | Cho phép nhập cả dòng |
| Nối chuỗi | s1 + s2 | |
| Độ dài | s.length() | |
| Truy cập ký tự | s[i] | |
| Vòng lặp ký tự | for (char c : s) |
