2009-05-25 22 views
171

मैं इस question के उत्तर पढ़ रहा था और पाया कि तारों के लिए वास्तव में लंबाई() कहा जाता है (मैं हमेशा आकार() का उपयोग करता हूं)। स्ट्रिंग क्लास में इस विधि को रखने का कोई विशिष्ट कारण है? मैंने एमएसडीएन और सीपीपीआरफर्नेंस दोनों को पढ़ा और वे संकेत देते हैं कि आकार() और लंबाई() के बीच कोई अंतर नहीं है। यदि ऐसा है, तो क्या यह वर्ग के उपयोगकर्ता के लिए अधिक भ्रमित नहीं हो रहा है?std :: स्ट्रिंग लंबाई() और आकार() सदस्य फ़ंक्शंस

उत्तर

226

documentation के अनुसार, ये केवल समानार्थी हैं। size() अन्य एसटीएल कंटेनर (जैसे vector, map, आदि) और length() के साथ संगत होने के लिए है, जो चरित्र के तारों के अधिकांश लोगों की अंतर्ज्ञानी धारणा के अनुरूप है। लोग आमतौर पर एक शब्द, वाक्य या पैराग्राफ लंबाई के बारे में बात करते हैं, इसका आकार नहीं, इसलिए length() चीजों को और अधिक पठनीय बनाने के लिए है।

+7

सहमत है। जब मैं टेम्पलेट कक्षाएं और फ़ंक्शंस लिखता हूं तो मैं 'आकार() '(यदि मैं कभी भी गैर-स्ट्रिंग क्लास का उपयोग करता हूं) का उपयोग करता हूं, लेकिन अधिकांश समय मैं सादे तारों के साथ काम करते समय' लंबाई() 'का उपयोग करता हूं। – Marius

+1

आकार() बाइट्स में (बाइट्स में) स्ट्रिंग के आकार को वापस नहीं करता है, जबकि लंबाई() अक्षरों की संख्या देता है, जो सिर्फ 1 char = 1 बाइट के साथ मेल खाता है? –

+1

नहीं। वे एक ही कार्य हैं; वे दस्तावेज़ भी साझा करते हैं: http://en.cppreference.com/w/cpp/string/basic_string/size। – tgamblin

15

रूबी के सिर्फ एक ही है, btw, पेशकश दोनों #lengthऔर#size सरणियों और हैश में आइटमों की संख्या (सी ++ केवल तार के लिए यह करता है) के लिए समानार्थी शब्द के रूप में।

न्यूनतम और लोग जो विश्वास करते हैं "वहां एक होना चाहिए, और आदर्श रूप से केवल एक ही, इसे करने का स्पष्ट तरीका" (जैसा कि पायथन पढ़ने के जेन के रूप में), मुझे लगता है, ज्यादातर आपके संदेहों से सहमत हैं, @ नवीन, जबकि पर्ल के प्रशंसकों के "इसे करने के एक से अधिक तरीके हैं" (या एक अवधारणा को व्यक्त करने के लिए एक समान रूप से समकक्ष वाक्य रचनात्मक रूप देने वाले एक बेजिलियन वैकल्पिक "शोर शब्द" के साथ एसक्यूएल का सिंटैक्स) इसमें कोई संदेह नहीं होगा कि रूबी, और विशेष रूप से सी ++, बस डॉन इस तरह के synonymical अनावश्यकता की पेशकश में काफी दूर नहीं जाना ;-)।

+8

इस मामले में यह gratuitous है। पर्ल का व्याकरण और उपयोग आपको अपनी पसंद की शैली का उपयोग करके चीजों को व्यक्त करने देता है। एक ही चीज़ के लिए दो अलग-अलग शब्द होने से केवल स्टैक ओवरफ्लो में खोज-शर्तों के साथ आना मुश्किल हो जाता है। –

-3

स्ट्रिंग की लंबाई == कितने बिट्स कि स्ट्रिंग होने, आकार == उन बिट्स के आकार, तार में दोनों एक ही संपादक आवंटित करता है, तो चरित्र का आकार 1 बाइट

+0

गलत उत्तर। स्वीकृत उत्तर में जुड़े दस्तावेज़ देखें। –

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