मैं निम्न-स्तरीय एपीआई के साथ काम कर रहा हूं जो क्रमशः एक स्ट्रिंग और इसकी लंबाई का प्रतिनिधित्व करने के लिए char*
और संख्यात्मक मान स्वीकार करता है। मेरा कोड std::basic_string
का उपयोग करता है और उचित अनुवाद के साथ इन विधियों में कॉल करता है। दुर्भाग्यवश, इनमें से कई विधियां अलग-अलग आकार की स्ट्रिंग लम्बाई स्वीकार करती हैं (यानी अधिकतम (unsigned char
), अधिकतम (short
), आदि ...) और मैं यह सुनिश्चित करने के लिए कोड लिख रहा हूं कि मेरी स्ट्रिंग इंस्टेंस निर्धारित अधिकतम लंबाई से अधिक न हो निम्न स्तर के एपीआई द्वारा।कोई लंबाई सीमा वाले स्ट्रिंग को लागू करने के लिए std :: basic_string का लाभ उठा सकता है?
डिफ़ॉल्ट रूप से, एक std::basic_string
उदाहरण की अधिकतम लंबाई का अधिकतम मान से बाध्य है size_t
(या तो अधिकतम (unsigned int
) या अधिकतम (__int64
))। std::basic_string
कार्यान्वयन के गुणों और आवंटन कार्यान्वयन में हेरफेर करने का कोई तरीका है ताकि मैं size_t
के स्थान पर उपयोग करने के लिए अपना स्वयं का प्रकार निर्दिष्ट कर सकूं? ऐसा करके, मैं std::basic_string
कार्यान्वयन के भीतर किसी भी मौजूदा सीमा शुल्क का लाभ उठाने की उम्मीद कर रहा हूं इसलिए अनुवाद करने के दौरान मुझे ऐसा करने की ज़रूरत नहीं है।
मेरे प्रारंभिक जांच से पता चलता है कि यह मेरी अपनी स्ट्रिंग वर्ग लेखन के बिना संभव नहीं है, लेकिन मैं आशा करती हूं कि मैं माता पिता के रूप में कुछ :)
मैं एक इंटेल टेम्पलेट पैरामीटर जोड़ा होगा और max_size() वापसी एन था; तो वह typedef std :: basic_string , my_allocator > my256string कर सकता है; –
jmucchiello
मुझे लगता है कि टेम्पलेट तर्क के रूप में 'size_type' को उजागर करना फायदेमंद होगा क्योंकि उपयोगकर्ता यह चुनने के लिए स्वतंत्र है कि कौन सा' size_type' किसी दिए गए स्ट्रिंग उदाहरण के लिए सबसे उपयुक्त है। फिर, आंशिक टेम्पलेट विशेषज्ञता इस प्रकार को 'basic_string' के साथ अच्छा बनाने में मदद करेगी। –