2015-04-02 2 views
5

एसटीएल में, जब मैं s.find("") करता हूं, तो यह s.find_first_of("") रिटर्न -1 (एनओपीएस) देता है। इस अंतर का कारण क्या है?रिक्त स्ट्रिंग के लिए खोज करते समय बनाम find_first_of ढूंढें

+1

मुझे उम्मीद है कि 's.find ("");' 0 लौटने के लिए (और यह मेरे द्वारा कार्यान्वित कार्यान्वयन के साथ ऐसा करता है)। उदाहरण के लिए: http://coliru.stacked-crooked.com/a/3d5a6076bde75e28 –

+0

सत्य। यह बात बताने के लिए धन्यवाद। सवाल में परिवर्तन किया। अभी भी –

उत्तर

10

s.find(t)s में सबस्ट्रिंग t की पहली आवृत्ति पाता है। यदि t खाली है, तो उस घटना s की शुरुआत में है, और s.find(t) 0.

s.find_first_of(t) पात्रों t में की एक की पहली आवृत्ति पाता है वापस आ जाएगी। यदि t खाली स्ट्रिंग है, तो t में कोई वर्ण नहीं हैं, इसलिए कोई घटना नहीं मिल सकती है, और find_first_ofnpos वापस आ जाएगा।

Live on ideone

+0

अंतर को समझा नहीं है लेकिन स्ट्रिंग की शुरुआत में "" नहीं है। आपके पास "ए" सही है? जैसा कि आपके उदाहरण में है। s.find ("') वापसी -1 को भी चाहिए? –

+0

@littlecegian:" "शून्य वर्ण होते हैं और निश्चित रूप से किसी भी स्ट्रिंग की शुरुआत में लंबाई 0 का एक सबस्ट्रिंग होता है। (लंबाई 0 का एक सबस्ट्रिंग भी शुरू होता है स्ट्रिंग में हर दूसरी स्थिति में, यदि अन्य स्थितियां हैं, लेकिन स्थिति 0 पर एक सबसे बाएं है।) – rici

+0

यदि ऐसा है तो find_first_of को "0" में सभी वर्णों के बाद से 0 को वापस करना चाहिए, खाली स्ट्रिंग है एक चरित्र जो रिटर्न 0 की खोज करता है। सही? –

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