यह ध्यान रखना दिलचस्प है कि append
का रूप यहां;
string& append(size_type count, CharT ch);
निर्माता similar input लेने प्रतिबिंबित करता है।
basic_string(size_type count,
CharT ch,
const Allocator& alloc = Allocator());
और इस तरह के resize(size_type count, CharT ch);
रूप में कुछ अन्य तरीकों कि एक चरित्र के साथ एक count
लेते हैं,।
स्ट्रिंग क्लास बड़ा है और यह संभव है कि str.append('b');
के लिए विशेष उपयोग केस (और अधिभार) पर विचार नहीं किया गया था, या विकल्प पर्याप्त माना गया था।
बस सरल इस के लिए एक एकल अधिभार की शुरूआत अस्पष्टता को पेश कर सकता अभिन्न int
और char
अनुरूप (कुछ प्लेटफार्मों पर इस मामले में हो सकता है) है।
append
के कई विकल्प हैं जो एक एकल वर्ण जोड़ रहे हैं।
- एक वर्ण युक्त एक स्ट्रिंग जोड़ना
str.append("b");
किया जा सकता है। यद्यपि यह बिल्कुल वही नहीं है, इसका एक ही प्रभाव है।
- जैसा कि बताया जा रहा है
operator+=
- वहाँ भी,
push_back()
है, जो अन्य मानक कंटेनर
प्वाइंट, यह शायद एक उपयोग के मामले (या मजबूत पर्याप्त उपयोग के मामले) के रूप में माना नहीं किया गया है के साथ संगत है है इस प्रकार , इसके लिए पूरा करने के लिए append
में एक उपयुक्त अधिभार/हस्ताक्षर जोड़ा नहीं गया था।
वैकल्पिक डिजाइन बहस किया जा सकता है, लेकिन मानक और इस वर्ग की परिपक्वता को देखते हुए यह संभावना नहीं है कि वह जल्द ही बदल जाएगा - यह बहुत अच्छी तरह से कोड का एक बहुत तोड़ सकते थे।
append
के लिए वैकल्पिक हस्ताक्षर भी विचार किए जा सकते हैं; एक संभावित समाधान count
और char
(संभवतः एक डिफ़ॉल्ट जोड़ना) के क्रम को उलट करने के लिए किया जा सकता था;
string& append(CharT ch, size_type count = 1);
एक और, critique of basic_string
में से कुछ में वर्णित के रूप append
दूर करने के लिए, वहाँ प्राप्त करने के लिए यह क्या करता है कई तरीके हैं।
यह तकनीकी रूप से नहीं है कि यह कम शक्तिशाली है, लेकिन कोई भी नहीं सोचा था कि 'std :: string :: append (char)' लिखना आवश्यक था। यदि आप ऐसा करना चाहते हैं तो '+ =' का उपयोग करें ... –
संबंधित: http://stackoverflow.com/questions/1472048/how-to-append-a-char-to-a-stdstring –
आप 'std का उपयोग कर सकते हैं :: string :: संलग्न करें (गिनती, चार) '' count = 1'or 'std :: string :: push_back (char)' –