Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một chuỗi có chứa chuỗi con trong C ++ hay không

Ở đây chúng ta sẽ xem cách các hàm thư viện chuỗi có thể được sử dụng để khớp các chuỗi trong C ++. Ở đây chúng ta đang sử dụng phép toán 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 mà chuỗi được tìm thấy. Ở đây, chúng tôi đang sử dụng hàm find () này nhiều lần để lấy tất cả các kết quả phù hợp.

Nếu mục được tìm thấy, hàm này trả về vị trí. Nhưng nếu nó không được tìm thấy, nó sẽ trả về chuỗi ::npos.

Vì vậy, để kiểm tra xem chuỗi con có 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 tôi chỉ đơn giản là nhận được vị trí mà chuỗi con hiện diện.

Input: The main string “aabbabababbbaabb” and substring “abb”
Output: The locations where the substrings are found. [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 - Vị trí của chuỗi con trong chuỗi chính

pos := 0
while index = first occurrence of sub_str into the str in range pos to end of the string, do
   print the index as there is a match
   pos := index + 1
done

Mã mẫu

#include
using namespace std;
main() {
   string str1 = "aabbabababbbaabb";
   string str2 = "abb";
   int pos = 0;
   int index;
   while((index = str1.find(str2, pos)) != string::npos) {
      cout << "Match found at position: " << index << endl;
      pos = index + 1; //new position is from next element of index
   }
}

Đầu ra

Match found at position: 1
Match found at position: 8
Match found at position: 13