Ở đây chúng ta sẽ thấy cách các hàm thư viện string có thể được dùng để khớp chuỗi trong C++. Ở đây chúng ta sử dụng thao tác find() để lấy các lần xuất hiện của chuỗi con vào chuỗi chính. Phương thức find() này trả về vị trí đầu tiên nơi chuỗi được tìm thấy. Ở đây chúng ta sử dụng hàm find() nhiều lần để lấy tất cả các khớp.
Nếu mục được tìm thấy, hàm này trả về vị trí. Nhưng nếu không tìm thấy, nó sẽ trả về string::npos.
Đầu vào: Chuỗi chính "aabbabababbbaabb" và chuỗi con "abb" Đầu ra: Các vị trí tìm thấy chuỗi con. [1, 8, 13]
Thuật toán
String_Find(main_str, sub_str)
Đầu vào - Chuỗi chính và chuỗi con cần kiểm tra
Đầu ra - Các vị trí của chuỗi con trong chuỗi chính
pos := 0
while index = lần xuất hiện đầu tiên của sub_str trong str trong phạm vi pos đến cuối chuỗi, thực hiện
in index vì có khớp
pos := index + 1
kết thúcMã ví dụ
#include<iostream>
using namespace std;
main() {
string str1 = "aabbabababbbaabb";
string str2 = "abb";
int pos = 0;
int index;
while((index = str1.find(str2, pos)) != string::npos) {
cout << "Tìm thấy khớp tại vị trí: " << index << endl;
pos = index + 1; //vị trí mới từ phần tử tiếp theo của index
}
}Kết quả:
Tìm thấy khớp tại vị trí: 1 Tìm thấy khớp tại vị trí: 8 Tìm thấy khớp tại vị trí: 13