दिलचस्प पोस्ट
अपठित जीमेल मेल की संख्या कैसे प्राप्त करें (एंड्रॉइड पर) कंसोल एप्लीकेशन की खिड़की के संभाल मैं कैसे प्राप्त करूं? डायलॉग फ्रेगमेंट से एक टुकड़ा तक डेटा कैसे प्राप्त करें? फास्ट फूरियर रूपांतरण का उपयोग करके ऑडियो का विश्लेषण करें pop_back () वापसी मान? सफारी पर "बैक" बटन दबाने पर 'पेजेव' प्राप्त नहीं होता है * आईपैड पर " एचटीटीपीएलएलटी के साथ एएसपी.नेट वेब एपीआई सेवा को प्रमाणित करने में असमर्थ सी # में "वापसी की प्रतीक्षा" का उद्देश्य क्या है? PHP में एक बहुआयामी सरणी को गूंजें Jquery का उपयोग करके इनपुट का चयन कैसे करें एनएएन रिटर्न 'नंबर' का प्रकार क्यों है? Google मानचित्र कैसे अपनी एपीआई कुंजी सुरक्षित करता है? कैसे कुछ समान बनाने के लिए? सरणी सूची के सरणी के सी # परिकलन? मैं PostgreSQL में किसी विशेष स्कीमा के डेटाबेस में संग्रहीत सभी फ़ंक्शन की एक सूची कैसे प्राप्त करूं? Jsplitpane के भीतर jscrollpane के भीतर कैनवास के साथ समस्या का आकार बदलना

सी ++ चेतावनी: स्ट्रिंग निरंतर से 'चार *' के लिए पदावनत रूपांतरण

मैं ग्नुप्लॉट का प्रयोग सी ++ में एक ग्राफ को आकर्षित करने के लिए कर रहा हूँ ग्राफ की उम्मीद के अनुसार साजिश है, लेकिन संकलन के दौरान एक चेतावनी है। चेतावनी का क्या मतलब है?

warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] 

यह फ़ंक्शन मैं उपयोग कर रहा हूं:

 void plotgraph(double xvals[],double yvals[], int NUM_POINTS) { char * commandsForGnuplot[] = {"set title \"Probability Graph\"", "plot 'data.temp' with lines"}; FILE * temp = fopen("data.temp", "w"); FILE * gnuplotPipe = popen ("gnuplot -persistent ", "w"); int i; for (i=0; i < NUM_POINTS; i++) { fprintf(temp, "%lf %lf \n", xvals[i], yvals[i]); //Write the data to a te mporary file } for (i=0; i < NUM_COMMANDS; i++) { fprintf(gnuplotPipe, "%s \n", commandsForGnuplot[i]); //Send commands to gn uplot one by one. } fflush(gnuplotPipe); } 

Solutions Collecting From Web of "सी ++ चेतावनी: स्ट्रिंग निरंतर से 'चार *' के लिए पदावनत रूपांतरण"

स्ट्रिंग लीटरल्स const char की एक सरणी हैं, हम इसे मसौदा सी ++ मानक अनुभाग 2.14.5 स्ट्रिंग 2.14.5 से देख सकते हैं जो कहते हैं ( जोर दिया ):

साधारण स्ट्रिंग लीटरल और यूटीएफ -8 स्ट्रिंग लीटरल को संकीर्ण स्ट्रिंग लीटरल्स के रूप में भी जाना जाता है। एक संकीर्ण स्ट्रिंग शब्दशः प्रकार "सर कॉन्रेर ऑर" है , जहां n नीचे वर्णित स्ट्रिंग का आकार है, और स्थैतिक संग्रहण अवधि (3.7) है।

इसलिए यह परिवर्तन चेतावनी को निकाल देगा:

 const char * commandsForGnuplot[] = {"set title \"Probability Graph\"", "plot 'data.temp' with lines"}; ^^^^^ 

ध्यान दें, const डेटा को इंगित करने के लिए * गैर-कॉन्स्ट char ** को अनुमति देना एक बुरा विचार है चूंकि एक const या स्ट्रिंग को संशोधित करने के बाद अपरिभाषित व्यवहार होता है हम इसे खंड 7.1.6.1 जाकर देख सकते हैं । सीवी-क्वालिफायर जो कहते हैं:

सिवाय इसके कि किसी भी वर्ग के सदस्य घोषित किए गए परिवर्तन (7.1.1) को संशोधित किया जा सकता है, अपने जीवनकाल (3.8) के दौरान एक const वस्तु को संशोधित करने का कोई भी प्रयास अपरिभाषित व्यवहार में परिणाम देता है।

और अनुभाग 2.14.5 स्ट्रिंग 2.14.5 जो कहते हैं:

चाहे सभी स्ट्रिंग लीटरल अलग (अर्थात, ऑनोवर्लैपिंग ऑब्जेक्ट्स में संग्रहित होते हैं) कार्यान्वयन को परिभाषित किया गया है। स्ट्रिंग शब्दशः को संशोधित करने के प्रयास का असर अपरिभाषित है।