ที่นี่เราจะดูว่าฟังก์ชันไลบรารีสตริงสามารถใช้เพื่อจับคู่สตริงใน C ++ ได้อย่างไร ที่นี่เราใช้การดำเนินการ find() เพื่อรับการเกิดขึ้นของสตริงย่อยในสตริงหลัก วิธี find() นี้จะคืนค่าตำแหน่งแรกที่พบสตริง เราใช้ฟังก์ชัน find() นี้หลายครั้งเพื่อให้ได้ผลลัพธ์ที่ตรงกันทั้งหมด
หากพบรายการ ฟังก์ชันนี้จะคืนค่าตำแหน่ง แต่ถ้าหาไม่เจอ มันจะคืนค่า string::npos.
ดังนั้นในการตรวจสอบว่ามี substring อยู่ใน main string หรือไม่ เราต้องตรวจสอบ return value ของ find() เป็น string::npos หรือไม่
ที่นี่เราเพียงแค่รับตำแหน่งที่มีสตริงย่อยอยู่
Input: The main string “aabbabababbbaabb” and substring “abb” Output: The locations where the substrings are found. [1, 8, 13]
อัลกอริทึม
String_Find(main_str, sub_str)
ป้อนข้อมูล − สตริงหลักและสตริงย่อยที่จะตรวจสอบ
ผลผลิต − ตำแหน่งของสตริงย่อยในสตริงหลัก
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
โค้ดตัวอย่าง
#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 } }
ผลลัพธ์
Match found at position: 1 Match found at position: 8 Match found at position: 13