कैसे चार के लिए एक स्ट्रिंग आवंटित करने के लिए * पीडब्लूकैसे C++ में ग में चार के लिए एक स्ट्रिंग आवंटित करने के लिए * पीडब्लू ++
की तरह ...
चार * पीडब्लू = कुछ स्ट्रिंग
??
कैसे चार के लिए एक स्ट्रिंग आवंटित करने के लिए * पीडब्लूकैसे C++ में ग में चार के लिए एक स्ट्रिंग आवंटित करने के लिए * पीडब्लू ++
की तरह ...
चार * पीडब्लू = कुछ स्ट्रिंग
??
निरंतर आरंभीकरण के लिए आप बस
char *pw = "mypassword";
उपयोग कर सकते हैं स्ट्रिंग एक चर में संग्रहीत किया जाता है, और आप() फ़ंक्शन स्ट्रिंग की एक प्रति तो आप strcpy उपयोग कर सकते हैं बनाने की जरूरत है
char *pw = new char(strlen(myvariable) + 1);
strcpy(pw, myvariable);
// use of pw
delete [] pw; // do not forget to free allocated memory
आपको शाब्दिक पर 'कॉन्स्ट char * pw' का उपयोग करना चाहिए। – Notinlist
यदि आप सिर्फ pw
पर एक स्ट्रिंग अक्षर निर्दिष्ट करना चाहते हैं, तो आप इसे char *pw = "Hello world";
जैसे कर सकते हैं।
आप एक सी ++ std::string
वस्तु है, तो मूल्य जिनमें से आप pw
को असाइन करना चाहते हैं, आप इसे char *pw = some_string.c_str()
की तरह कर सकते हैं। हालांकि, pw
अंक जो मान some_string
के जीवनकाल के लिए मान्य होंगे।
यह केवल जब तक आप 'some_string' पर एक परिवर्तनशील कार्रवाई करने मान्य की गारंटी दी है। – Bill
यदि आपका मतलब std::string
है, तो आप c_str
पर कॉल करके, सी-स्टाइल स्ट्रिंग के लिए पॉइंटर प्राप्त कर सकते हैं। लेकिन सूचक को const
होना चाहिए।
const char *pw = astr.c_str();
एक बफर आपने पहले आवंटित किया है pw
अंक, आप के बजाय कि बफर में एक स्ट्रिंग की सामग्री कॉपी करना चाहते हो सकता है, तो:
astr.copy(pw, lengthOfBuffer);
आप एक स्ट्रिंग शाब्दिक के साथ शुरू कर रहे हैं यह पहले से ही एक सूचक है:
const char *pw = "Hello, world".
सूचना const
फिर - स्ट्रिंग शाब्दिक, संशोधित नहीं किया जाना चाहिए क्योंकि वे अपने कार्यक्रम में संकलित किया गया है।
लेकिन अगर आप एक बेहतर समय आम तौर पर होगा यदि आप std::string
हर जगह का उपयोग करें:
#include <string>
स्ट्रिंग में सीमित होने चाहिए:
std::string astr("Hello, world");
वैसे, आप सही हेडर को शामिल करने की जरूरत है डबल कोट्स जैसे:
char * pStr = "stackoverflow";
यह इस स्ट्रिंग को प्रोग्राम की पढ़ाई केवल स्मृति में संग्रहीत करेगा। और बाद में संशोधन पर यूबी का कारण बन सकता है।
मुझे लगता है कि आप यह कर सकते हैं:
using namespace std;
string someString;
geline(cin,someString);
char *pw = strdup(someString.c_str());
लेकिन itanother तरह से कर रही है पर विचार करें। http://tiswww.case.edu/php/chet/readline/rltop.html (जीएनयू रीडलाइन लाइब्रेरी) देखें। मुझे इसके बारे में विवरण नहीं पता, बस इसके बारे में सुना है। अन्य मानक इनपुट से पासवर्ड पढ़ने के लिए अधिक विस्तृत या अन्य युक्तियां हो सकती हैं।
यदि आप केवल कुछ कॉल के लिए इसे एक कॉल के लिए उपयोग करना चाहते हैं तो आपको कुछ स्ट्रिंग की सामग्री की प्रतिलिपि बनाने की आवश्यकता नहीं है, तो आप someString.c_str()
का उपयोग सीधे const char *
के रूप में कर सकते हैं।
आप pw
कुछ समय बाद में free
उपयोग करने के लिए
strdup' आसान है का उपयोग लेकिन पोर्टेबिलिटी मुद्दों के प्रति सतर्क रहने अच्छी आदत है : http://stackoverflow.com/questions/482375/c-strdup- कार्यक्षमता – Manuel
चार पीडब्लू = "कुछ स्ट्रिंग" *; क्या आप इसकी उम्मीद नहीं कर रहे हैं? – Jagannath
अगर मैं char * pw = "कुछ स्ट्रिंग" की तरह उपयोग करता हूं; मुझे अपवाद मिल रहा है। – Anuya
"ढेर के भ्रष्टाचार" आप पूरे कोड पोस्ट कर सकते हैं? – Jagannath