2011-03-30 10 views
7

मैं दो तारों की तुलना करना चाहता हूं। क्या यह strcmp के साथ संभव है? (मैंने कोशिश की और यह काम नहीं लग रहा है)। string::compare एक समाधान है?strcmp या string :: तुलना करें?

इसके अलावा, string से char पर तुलना करने का कोई तरीका है?


प्रारंभिक टिप्पणियों के लिए धन्यवाद। मैं सी ++ में कोडिंग कर रहा था और हाँ यह std::string जैसा कि आपने उल्लेख किया था। मैंने कोड पोस्ट नहीं किया क्योंकि मैं सामान्य ज्ञान सीखना चाहता था और यह एक बहुत लंबा कोड है, इसलिए यह सवाल के लिए अप्रासंगिक था।

मुझे लगता है कि मैंने सी ++ और सी के बीच अंतर सीखा है, यह इंगित करने के लिए धन्यवाद। और मैं अब अधिभारित ऑपरेटरों का उपयोग करने की कोशिश करूंगा। और जिस तरह से string::compare भी काम किया।

+0

"काम नहीं कर की तरह लगता है"? पैरामीटर क्या हैं और नतीजा क्या है? –

+0

यदि आप सी ++ में प्रोग्रामिंग कर रहे हैं तो आपको C++ idioms का उपयोग करना चाहिए, जिसका अर्थ है C++ 'string' और इसके संबंधित तरीके। सी के लिए सी idioms, जैसे 'char *' और 'strcpy' का उपयोग करें। –

+0

"क्या काम नहीं कर रहा है" से आपका क्या मतलब है? – helloworld922

उत्तर

21

सी ++ के लिए, std::string का उपयोग करें और string::compare का उपयोग करके तुलना करें।

सी उपयोग के लिए strcmp। यदि आपका (मेरा मतलब है कि आपके प्रोग्राम) स्ट्रिंग्स (कुछ अजीब कारण) के लिए nul समाप्त नहीं हैं, तो strncmp का उपयोग करें।

लेकिन क्यों किसी नहीं std::string के लिए == के रूप में सरल कुछ का प्रयोग करेंगे?

12

मान लें कि आपका मतलब std::string है, ओवरलोडेड ऑपरेटरों का उपयोग क्यों न करें: str1 == str2, str1 < str2?

+0

ildjarn की पोस्ट पर मेरी टिप्पणी देखें कि आप कुछ और क्यों चाहते हैं। – diverscuba23

1

सी ++ का उपयोग करते समय C++ फ़ंक्शंस का उपयोग करें। string::compare। सी का उपयोग करने और आप, स्ट्रिंग के लिए char* का उपयोग का उपयोग strcmp

3

देखें std::basic_string::compare और std::basic_string operators reference (विशेष रूप से, वहाँ आदि मौजूद operator==, operator!=, operator<,) करने के लिए मजबूर कर रहे हैं। आपको और क्या चाहिए?

+0

आप यह पता लगाने के लिए भी शर्त लगा सकते हैं कि एक स्ट्रिंग बराबर, अधिक, या किसी अन्य स्ट्रिंग से कम है, सभी को लगता है (सोचें कि कौन सी शाखा पेड़ की संरचना के लिए नीचे उतरनी है), इस मामले में फ़ंक्शन जैसे स्ट्रैम्प अधिक उपयोगी है। – diverscuba23

+0

@ डाइवर्सक्यूबा 23: वास्तव में उचित बिंदु। : -] किस मामले में, अभी भी 'std :: string :: तुलना' है, जिसे @Paul R टिप्पणी के कारण C++ में 'strcmp' पर प्राथमिकता दी जानी चाहिए। मैं अपनी पोस्ट संपादित करूंगा। – ildjarn

1

अपने प्रश्न से, "क्या एक स्ट्रिंग को एक char से तुलना करने का कोई तरीका है?" क्या आपका मतलब है "मैं कैसे पता लगा सकता हूं कि स्ट्रिंग में कोई विशेष char निहित है या नहीं?" यदि ऐसा है, तो सी-लाइब्रेरी फ़ंक्शन:

char *strchr(const char *s, int c); 

यह आपके लिए करेगा।

- (! और तुलना) पीट

1

std :: स्ट्रिंग शामिल कर सकते हैं एम्बेडेड अशक्त अक्षर।

हैं * कंप्यूटर अनुप्रयोग (...) सी शैली तार की तुलना करेंगे, पहले नल केरेक्टर अप करने के लिए की तुलना (या निर्दिष्ट अधिकतम बाइट्स की एन.आर./अक्षर)

स्ट्रिंग :: वास्तव में एक के रूप में कार्यान्वित किया जाता है की तुलना टेम्पलेट basic_string ताकि आप इसे अन्य प्रकारों के लिए काम करने की उम्मीद कर सकें जैसे wstring

अस्पष्ट वाक्यांश पर "एक स्ट्रिंग से एक स्ट्रिंग की तुलना करें" पर आप char से * स्ट्रिंग की तुलना कर सकते हैं।() शुरू या पहली घटना (स्ट्रिंग :: find_first_of और स्ट्रिंग :: find_first_not_of)

अस्वीकरण देखने के: - यदि आप अधिक विशिष्ट हो सकता है मेरी एचटीसी पर टाइप, टाइपिंग त्रुटि सुरक्षित :)

संबंधित मुद्दे