Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าสตริงมีสตริงย่อยใน C++ . หรือไม่


ที่นี่เราจะดูว่าฟังก์ชันไลบรารีสตริงสามารถใช้เพื่อจับคู่สตริงใน 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