मैं इस question के उत्तर पढ़ रहा था और पाया कि तारों के लिए वास्तव में लंबाई() कहा जाता है (मैं हमेशा आकार() का उपयोग करता हूं)। स्ट्रिंग क्लास में इस विधि को रखने का कोई विशिष्ट कारण है? मैंने एमएसडीएन और सीपीपीआरफर्नेंस दोनों को पढ़ा और वे संकेत देते हैं कि आकार() और लंबाई() के बीच कोई अंतर नहीं है। यदि ऐसा है, तो क्या यह वर्ग के उपयोगकर्ता के लिए अधिक भ्रमित नहीं हो रहा है?std :: स्ट्रिंग लंबाई() और आकार() सदस्य फ़ंक्शंस
उत्तर
documentation के अनुसार, ये केवल समानार्थी हैं। size()
अन्य एसटीएल कंटेनर (जैसे vector
, map
, आदि) और length()
के साथ संगत होने के लिए है, जो चरित्र के तारों के अधिकांश लोगों की अंतर्ज्ञानी धारणा के अनुरूप है। लोग आमतौर पर एक शब्द, वाक्य या पैराग्राफ लंबाई के बारे में बात करते हैं, इसका आकार नहीं, इसलिए length()
चीजों को और अधिक पठनीय बनाने के लिए है।
रूबी के सिर्फ एक ही है, btw, पेशकश दोनों #length
और#size
सरणियों और हैश में आइटमों की संख्या (सी ++ केवल तार के लिए यह करता है) के लिए समानार्थी शब्द के रूप में।
न्यूनतम और लोग जो विश्वास करते हैं "वहां एक होना चाहिए, और आदर्श रूप से केवल एक ही, इसे करने का स्पष्ट तरीका" (जैसा कि पायथन पढ़ने के जेन के रूप में), मुझे लगता है, ज्यादातर आपके संदेहों से सहमत हैं, @ नवीन, जबकि पर्ल के प्रशंसकों के "इसे करने के एक से अधिक तरीके हैं" (या एक अवधारणा को व्यक्त करने के लिए एक समान रूप से समकक्ष वाक्य रचनात्मक रूप देने वाले एक बेजिलियन वैकल्पिक "शोर शब्द" के साथ एसक्यूएल का सिंटैक्स) इसमें कोई संदेह नहीं होगा कि रूबी, और विशेष रूप से सी ++, बस डॉन इस तरह के synonymical अनावश्यकता की पेशकश में काफी दूर नहीं जाना ;-)।
इस मामले में यह gratuitous है। पर्ल का व्याकरण और उपयोग आपको अपनी पसंद की शैली का उपयोग करके चीजों को व्यक्त करने देता है। एक ही चीज़ के लिए दो अलग-अलग शब्द होने से केवल स्टैक ओवरफ्लो में खोज-शर्तों के साथ आना मुश्किल हो जाता है। –
स्ट्रिंग की लंबाई == कितने बिट्स कि स्ट्रिंग होने, आकार == उन बिट्स के आकार, तार में दोनों एक ही संपादक आवंटित करता है, तो चरित्र का आकार 1 बाइट
गलत उत्तर। स्वीकृत उत्तर में जुड़े दस्तावेज़ देखें। –
- 1. std :: स्ट्रिंग :: लंबाई() बनाम std :: स्ट्रिंग :: आकार()
- 2. std :: स्ट्रिंग्स की क्षमता(), आरक्षित() और आकार बदलें() फ़ंक्शंस
- 3. std :: फ़ंक्शंस
- 4. std :: गैर स्थैतिक सदस्य फ़ंक्शंस के साथ फ़ंक्शन
- 5. सी ++: सदस्य फ़ंक्शंस
- 6. स्थैतिक सदस्य फ़ंक्शंस और थ्रेड-सुरक्षा
- 7. Haskell और स्ट्रिंग लंबाई
- 8. std :: स्ट्रिंग और QByteArray
- 9. सी ++ अधिकतम std :: स्ट्रिंग लंबाई ढेर आकार या ढेर आकार से निर्धारित है? प्रश्न में पूछे गए अनुसार
- 10. स्ट्रिंग लंबाई
- 11. printf स्ट्रिंग, चर लंबाई लंबाई
- 12. साइथन सी ++ और std :: स्ट्रिंग
- 13. std :: स्ट्रिंग :: c_str() और temporaries
- 14. गणना में लंबाई बनाम लंबाई बनाम आकार
- 15. std कोई सदस्य 'getline' है?
- 16. std :: u16string, std :: u32string, std :: string, length(), आकार(), कोडपॉइंट्स और वर्ण
- 17. ऑब्जेक्ट सदस्य फ़ंक्शंस में PHP और स्टेटिक वेरिएबल
- 18. std :: स्ट्रिंग
- 19. प्रदर्शन std :: strstr बनाम std :: स्ट्रिंग ::
- 20. क्या स्ट्रिंग लंबाई बाइट आकार के बराबर होती है?
- 21. स्ट्रिंग लंबाई के लिए जेटीबल कॉलम का आकार कैसे बदलें?
- 22. जावा में लंबाई और लंबाई()
- 23. आकार() std :: वेक्टर (सी ++)
- 24. सी # - सबस्ट्रिंग: सूचकांक और लंबाई स्ट्रिंग
- 25. सी ++ नया और हटाएं और स्ट्रिंग और फ़ंक्शंस
- 26. स्कैला बफर: आकार या लंबाई?
- 27. सी गतिशील स्ट्रिंग लंबाई
- 28. std :: थ्रेड त्रुटि (std का सदस्य नहीं धागा)
- 29. std :: स्ट्रिंग के कार्यों को ओवरराइट करना और ओवरराइड करना?
- 30. ग # स्ट्रिंग लंबाई सीमा
सहमत है। जब मैं टेम्पलेट कक्षाएं और फ़ंक्शंस लिखता हूं तो मैं 'आकार() '(यदि मैं कभी भी गैर-स्ट्रिंग क्लास का उपयोग करता हूं) का उपयोग करता हूं, लेकिन अधिकांश समय मैं सादे तारों के साथ काम करते समय' लंबाई() 'का उपयोग करता हूं। – Marius
आकार() बाइट्स में (बाइट्स में) स्ट्रिंग के आकार को वापस नहीं करता है, जबकि लंबाई() अक्षरों की संख्या देता है, जो सिर्फ 1 char = 1 बाइट के साथ मेल खाता है? –
नहीं। वे एक ही कार्य हैं; वे दस्तावेज़ भी साझा करते हैं: http://en.cppreference.com/w/cpp/string/basic_string/size। – tgamblin