2010-01-13 18 views
5

मेरे पास एक फ़ंक्शन में एक कॉन्स char * const string है। मैं स्ट्रिंग में तत्वों के विरुद्ध तुलना करने के लिए इसका उपयोग करना चाहता हूं।चार सूचक में स्ट्रिंग इटरेटर की तुलना

मैं स्ट्रिंग के माध्यम से पुनरावृत्ति करना चाहता हूं और फिर char * के विरुद्ध तुलना करना चाहता हूं।

#include <iostream> 
#include <string> 
#include <cstring> 

using namespace std; 

int main() 
{ 

    const char * const pc = "ABC"; 
    string s = "Test ABC Strings"; 

    string::iterator i; 

    for (i = s.begin(); i != s.end(); ++i) 
    { 
    if ((*i).compare(pc) == 0) 
    { 
     cout << "found" << endl; 
    } 
    } 

स्ट्रिंग इटरेटर के खिलाफ हल करने के लिए मैं char * को कैसे हल कर सकता हूं?

धन्यवाद ..

उत्तर

15

देखो:

const char* bar = "bar"; 
std::string s = "foo bar"; 

if (s.find(bar) != std::string::npos) 
    cout << "found!"; 
+0

रवींद्र, मुझे लगता है कि अब तक बिल्कुल नहीं सोचा था। आप सही हैं, 'ढूंढ' का उपयोग करके इसे स्वयं को पुन: कार्यान्वित करने की कोशिश करने से कहीं बेहतर दृष्टिकोण है। +1 – jalf

+0

यह काम करता है, धन्यवाद! – donalmg

5
std::string::iterator it; 
char* c; 
if (&*it == c) 

पुनरावर्तक अपसंदर्भन वस्तु की ओर इशारा करने के लिए एक संदर्भ अर्जित करता है। तो dereferencing जो आपको वस्तु के लिए एक सूचक देता है।

संपादित
बेशक , यह बहुत प्रासंगिक के रूप में एक बेहतर दृष्टिकोण पूरी तरह से तुलना छोड़ देते हैं और find समारोह पहले से ही तुम क्या चाहते करने के लिए मौजूद है पर भरोसा करने के लिए है नहीं है। std::string::find पर

1

ऐसा नहीं है अपने प्रश्न का उत्तर है, लेकिन ऐसा लगता है कि आप std::string::find विधि के साथ बेहतर हो सकता है।

कुछ इस तरह:

const char * const pc = "ABC"; 
string s = "Test ABC Strings"; 
size_t pos = s.find(pc); 
संबंधित मुद्दे