std::string::c_str()
आपको एक वर्ण श्रृंखला में const char*
पॉइंटर मिलता है जो स्ट्रिंग (शून्य-समाप्त) का प्रतिनिधित्व करता है।
आप इस सूचक अंक के डेटा में हेरफेर नहीं करना चाहिए, इसलिए यदि आप ऐसा करने की जरूरत है, डेटा की प्रतिलिपि।
डबल संपादित करें - यह एक अधिक सी ++ फैशन में कर
चूंकि यह अच्छे है कच्चे संकेत और एरे के प्रयोग से बचने के लिए जहां संभव हो, तब भी आप डेटा एक std::vector<char>
#include <string>
#include <vector>
int main()
{
std::string str = "Hello";
std::vector<char> cvec(str.begin(), str.end());
// do stuff
}
में प्राप्त कर सकते हैं के बाद से यह कच्चे संकेत का उपयोग करता
संपादित इस अधिक सी की तरह है और स्पष्ट रूप से मेम
#include <string>
#include <cstring>
int main()
{
std::string str = "Hello";
char *cptr = new char[str.size()+1]; // +1 to account for \0 byte
std::strncpy(cptr, str.c_str(), str.size());
// do stuff...
delete [] cptr;
}
आवंटित
आप ऐसा क्यों करना चाहते हैं? – GManNickG
@GMan: कारणों के बहुत सारे कारण हैं, मुख्य व्यक्ति सी सी एपीआई में फ़ंक्शंस का आह्वान कर रहा है? –
@Gman क्योंकि मुझे foobar वैरिएबल को UDT के inet_pton फ़ंक्शन में पास करने की आवश्यकता है जो केवल चार * प्रकार चर लेता है। –