สมมติว่าเรามีสตริง str และสตริงย่อยอื่น sub_str เราต้องหาดัชนีสำหรับการเกิดขึ้นทั้งหมดของ sub_str ใน str สมมติว่า str คือ “aabbababaabbbabbaaabba” และ sub_str คือ “abb” ดัชนีจะเป็น 1 9 13 18
เพื่อแก้ปัญหานี้ เราสามารถใช้ฟังก์ชัน substr() ใน C++ STL ฟังก์ชันนี้ใช้ตำแหน่งเริ่มต้นจากตำแหน่งที่จะเริ่มตรวจสอบ และความยาวของสตริงย่อย หากเท่ากับ sub_str จะส่งกลับตำแหน่ง
ตัวอย่าง
#include<iostream> using namespace std; void substrPosition(string str, string sub_str) { bool flag = false; for (int i = 0; i < str.length(); i++) { if (str.substr(i, sub_str.length()) == sub_str) { cout << i << " "; flag = true; } } if (flag == false) cout << "NONE"; } int main() { string str = "aabbababaabbbabbaaabba"; string sub_str = "abb"; cout << "Substrings are present at: "; substrPosition(str, sub_str); }
ผลลัพธ์
Substrings are present at: 1 9 13 18