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

Kiểm tra chuỗi có chứa chuỗi con trong C++


Ở đâ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.

Vì vậy, để kiểm tra xem chuỗi con có hiện diện trong chuỗi chính hay không, chúng ta phải kiểm tra giá trị trả về của find() có phải là string::npos hay không.

Ở đây chúng ta đơn giản chỉ lấy vị trí nơi chuỗi con hiện diện.

Đầ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úc

Mã ví dụ

#include <iostream> 
#include <string> 
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