এখানে আমরা দেখব কীভাবে স্ট্রিং লাইব্রেরি ফাংশনগুলো ব্যবহার করে C++-এ স্ট্রিং ম্যাচ করা যায়। এখানে আমরা find() অপারেশন ব্যবহার করছি মূল স্ট্রিংএ সাবস্ট্রিংর অকুরেন্স পেতে। এই find() মেথড সেই প্রথম লোকেশন রিটার্ন করে যেখানে স্ট্রিংটি পাওয়া গেছে। এখানে আমরা এই find() ফাংশনটি একাধিকবার ব্যবহার করছি সব ম্যাচ পেতে।
আইটেম যদি পাওয়া যায়, এই ফাংশন পজিশন রিটার্ন করে। কিন্তু যদি না পাওয়া যায়, তবে এটি string::npos রিটার্ন করবে।
ইনপুট: মূল স্ট্রিং "aabbabababbbaabb" এবং সাবস্ট্রিং "abb" আউটপুট: সাবস্ট্রিংগুলো যে লোকেশনগুলোতে পাওয়া গেছে। [1, 8, 13]
অ্যালগরিদম
String_Find(main_str, sub_str)
ইনপুট - মূল স্ট্রিং এবং চেক করার সাবস্ট্রিং
আউটপুট - মূল স্ট্রিংএ সাবস্ট্রিংর পজিশনগুলো
pos := 0 যতক্ষণ index = pos থেকে স্ট্রিংর শেষ পর্যন্ত sub_str-এর প্রথম অকুরেন্স, করুন index প্রিন্ট করুন কারণ ম্যাচ পাওয়া গেছে pos := index + 1 লুপ শেষ
উদাহরণ কোড
#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 << "Match found at position: " << index << endl;
pos = index + 1; // নতুন পজিশন index-এর পরবর্তী এলিমেন্ট থেকে
}
}
আউটপুট:
Match found at position: 1 Match found at position: 8 Match found at position: 13