से स्ट्रिंग की पहली घटना पाएं मेरे पास vector<string> vectorStrings
मान हैं: ta, bc, ac, st, cer, cda
। मैं एक इनपुट स्ट्रिंग में वेक्टर में किसी भी तार की पहली घटना को खोजना चाहता हूं।वेक्टर <string>
उदा।
InputStr = "this certainly helps";
वेक्टर में दिए गए तार की
, मैं चाहेगा "cer"
कहने का एक तरीका स्थिति 5
में पहली घटना थी।
int min = 9999999;
string first;
for(int i = 0; i < vectorStrings.size(); i++)
{
int pos = InputStr.find(vectorStrings[i]);
if(pos == string::npos)
continue;
if(pos < min)
{
min = pos;
first = vectorStrings[i];
}
}
// values of min and first gives which string occurred first
// and at the position of it in the input string
इस कार्यान्वयन काम करता है, लेकिन मुझे पता है कि अगर वहाँ बढ़ावा पुस्तकालयों या एसटीडी पुस्तकालय के साथ यह करने के लिए एक और अधिक सुरुचिपूर्ण तरीका मौजूद है चाहेंगे।
मैं विंडोज पर काम कर रहा हूँ और विजुअल स्टूडियो 2010
मैं के बारे में सुरुचिपूर्ण पता नहीं है, लेकिन मुझे लगता है बाहरी पाश पर जाने चाहिए स्ट्रिंग वर्ण और आंतरिक लूप (आपके मामले में - ढूंढें) अपने वेक्टर में तारों पर। मुझे लगता है कि यह अधिक कुशल होगा –
आप न्यूनतम 'स्ट्रिंग :: size_type min = string :: npos; '(जो आपको' pos == npos' test 'से छुटकारा पाने की अनुमति भी दे सकता है)। – UncleBens
आप एक इटरेटर का उपयोग कर सकते हैं। ;) –