उपयोग const char *से प्राप्त करने के लिए सदस्य फ़ंक्शन:std::stringc_str()
std::string str = "string";
const char* chr = str.c_str();
आप char *से एक नॉन-कास्ट प्राप्त करने के लिए सदस्य फ़ंक्शन का std::stringउपयोग कर सकते हैं data()जो C ++ 17 के बाद से नॉन-कॉस्ट पॉइंटर लौटाता है:
std::string str = "string";
char* chr = str.data();
भाषा के पुराने संस्करणों के लिए, आप एक वेक्टर में स्ट्रिंग को कॉपी करने के लिए रेंज कंस्ट्रक्शन का उपयोग कर सकते हैं जिसमें से एक नॉन-कास्ट पॉइंटर प्राप्त किया जा सकता है:
std::string str = "string";
std::vector<char> str_copy(str.c_str(), str.c_str() + str.size() + 1);
char* chr = str_copy.data();
लेकिन सावधान रहें कि यह आपको अंदर निहित स्ट्रिंग को संशोधित नहीं करने देगा str, केवल कॉपी के डेटा को इस तरह से बदला जा सकता है। ध्यान दें कि यह विशेष रूप से भाषा के पुराने संस्करणों में c_str()यहाँ उपयोग करने के लिए महत्वपूर्ण है क्योंकि वापस तब std::stringतक शून्य समाप्त होने की गारंटी नहीं दी गई c_str()थी जब तक कि इसे बुलाया नहीं गया था।
c_strपागलपन से पूरी तरह से बचें ।