यहां हम देखेंगे कि C++ में स्ट्रिंग लाइब्रेरी फंक्शन्स का उपयोग करके स्ट्रिंग्स को कैसे मैच करें। यहां हम सबस्ट्रिंग की घटनाओं को मुख्य स्ट्रिंग में प्राप्त करने के लिए find() ऑपरेशन का उपयोग कर रहे हैं। यह find() मेथड पहली लोकेशन लौटाता है जहां स्ट्रिंग मिली है। यहां हम सभी मैच प्राप्त करने के लिए इस find() फंक्शन का कई बार उपयोग कर रहे हैं।
यदि आइटम मिल जाता है, तो यह फंक्शन पोजीशन लौटाता है। लेकिन यदि नहीं मिलता है, तो यह string::npos लौटाएगा।
इसलिए यह जांचने के लिए कि क्या सबस्ट्रिंग मुख्य स्ट्रिंग में मौजूद है, हमें find() के रिटर्न वैल्यू की जांच करनी होगी कि यह string::npos है या नहीं।
यहां हम केवल वह पोजीशन प्राप्त कर रहे हैं जहां सबस्ट्रिंग मौजूद है।
इनपुट: मुख्य स्ट्रिंग "aabbabababbbaabb" और सबस्ट्रिंग "abb" आउटपुट: वे लोकेशन जहां सबस्ट्रिंग्स मिली हैं। [1, 8, 13]
एल्गोरिदम
String_Find(main_str, sub_str)
इनपुट - मुख्य स्ट्रिंग और चेक करने के लिए सबस्ट्रिंग
आउटपुट - मुख्य स्ट्रिंग में सबस्ट्रिंग की पोजीशन
pos := 0
जबकि index = pos से स्ट्रिंग के अंत तक की रेंज में sub_str की पहली घटना, करें
इंडेक्स प्रिंट करें क्योंकि वहां मैच है
pos := index + 1
किया
उदाहरण कोड
#include <iostream>
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; // नई पोजीशन इंडेक्स के अगले एलिमेंट से है
}
}
आउटपुट
Match found at position: 1 Match found at position: 8 Match found at position: 13