C++ có lớp String khác biệt với C-string truyền thống (mảng ký tự). Lớp string có nhiều thuộc tính và hàm thành viên hữu ích. Chúng ta sẽ xem các tính năng quan trọng.
1. Các Constructor của string
#include <iostream>
using namespace std;
int main() {
string str("This is a string");
cout << "String: " << str << endl;
string str2(str); // Khởi tạo từ string khác
cout << "String: " << str2 << endl;
string str3(5, 'A'); // Khởi tạo từ ký tự lặp lại
cout << "String: " << str3 << endl;
string str4(str, 5, 10); // Từ str, vị trí 5, độ dài 10
cout << "String: " << str4 << endl;
string str5(str.begin(), str.begin()+7); // Từ iterator begin đến begin+7
cout << "String: " << str5 << endl;
}
Kết quả
String: This is a string String: This is a string String: AAAAA String: is a strin String: This is
2. Các Toán tử của string
- Gán (
=) - Nối (
+) - Chỉ mục (
[])
#include <iostream>
using namespace std;
int main() {
string str = "Hello ";
string str2 = "World";
string str3, str4;
str3 = str; // Toán tử gán
cout << "str3: " << str3 << endl;
str4 = str + str2; // Toán tử nối
cout << "str4: " << str4 << endl;
cout << "Ky tu vi tri 1: " << str[1] << endl; // 'e'
}
Kết quả
str3: Hello str4: Hello World Ky tu vi tri 1: e
3. Các hàm thành viên quan trọng
#include <iostream>
using namespace std;
int main() {
string str = "Hello";
cout << "Truoc clear: " << str << endl;
str.clear(); // Xóa chuỗi
cout << "Sau clear: '" << str << "'" << endl;
str = "This is a string:";
cout << "Do dai (length/size): " << str.length() << " / " << str.size() << endl;
cout << "Ky tu vi tri 1 (at): " << str.at(1) << endl;
cout << "Ky tu dau (front): " << str.front() << endl;
cout << "Ky tu cuoi (back): " << str.back() << endl;
cout << "C-string (c_str): " << str.c_str() << endl;
cout << "Sau append: " << str.append("ABCDEF") << endl;
string str2 = "ANOTHER STRING";
cout << "Append 5 ky tu tu str2: " << str.append(str2, 0, 5) << endl;
// find - tìm chuỗi con
if (str.find("is") != string::npos)
cout << "\"is\" tim thay tai vi tri " << str.find("is") << endl;
else
cout << "Khong tim thay" << endl;
cout << "Substring(5,3): " << str.substr(5, 3) << endl;
cout << "Sau erase(5,4): " << str.erase(5, 4) << endl;
cout << "Sau replace(3,7,\"C++\"): " << str.replace(3, 7, "C++") << endl;
}
Kết quả
Truoc clear: Hello Sau clear: Do dai (length/size): 17 / 17 Ky tu vi tri 1 (at): h Ky tu dau (front): T Ky tu cuoi (back): : C-string (c_str): This is a string: Sau append: This is a string:ABCDEF Append 5 ky tu tu str2: This is a string:ABCDEFANOTH "is" tim thay tai vi tri 2 Substring(5,3): is Sau erase(5,4): This string:ABCDEFANOTH Sau replace(3,7,"C++"): ThiC++ string:ABCDEFANOTH
Tóm tắt các hàm hay dùng
| Hàm | Chức năng |
|---|---|
| length()/size() | Độ dài chuỗi |
| at(i) | Truy cập an toàn (kiem tra bien) |
| front()/back() | Ký tự đầu/cuối |
| c_str() | Chuyển sang const char* |
| append() | Nối chuỗi |
| find() | Tìm chuỗi con |
| substr(pos,len) | Lấy chuỗi con |
| erase(pos,len) | Xóa chuỗi con |
| replace(pos,len,str) | Thay thế chuỗi con |
| clear() | Xóa toàn bộ |
| empty() | Kiểm tra rỗng |