क्या C 11 की string::c_str() शून्य समाप्ति को समाप्त करती है?
C 11 में, string::c_str की अब कोई गारंटी नहीं है एक शून्य-समाप्त स्ट्रिंग उत्पन्न करें। 0
समाधान:
समाधान केवल स्ट्रिंग::c_str() का उपयोग करना है विरासत कोड के साथ संगतता। नए कोड के लिए, इसके बजाय string::data() का उपयोग करें। जबकि स्ट्रिंग::डेटा() एक शून्य-समाप्त स्ट्रिंग नहीं लौटाता है, यह अंतर्निहित बफर के लिए एक पॉइंटर लौटाता है, जिसे आंतरिक रूप से शून्य-समाप्त होने की गारंटी है।
कार्यान्वयन विवरण:
आंतरिक रूप से, स्ट्रिंग्स को अब नल-टर्मिनेटेड बफ़र्स का उपयोग करना आवश्यक है। धारा 21.4.5 में ऑपरेटर[] परिभाषा के लिए आवश्यक है कि आकार()
अतिरिक्त नोट्स:
&operator[](0) का उपयोग c_str() के पर्यायवाची के रूप में किया जा सकता है।समाप्त शून्य वर्ण में होना चाहिए स्ट्रिंग डेटा के समान बफ़र, क्योंकि *(p आकार()) charT() के बराबर होना चाहिए। इस प्रकार, भले ही शून्य वर्ण को आलस्य से प्रारंभ किया गया हो, मध्यवर्ती स्थिति में बफर का निरीक्षण करना संभव नहीं है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3