उपयोग const char *
से प्राप्त करने के लिए सदस्य फ़ंक्शन:std::string
c_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
पागलपन से पूरी तरह से बचें ।