Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Lớp string C++ và các ứng dụng (Phần 2)

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àmChứ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