c++ - सी++पाठ और चर के स्ट्रिंग बनाते हैं




string variables std (5)

मैं कुछ बहुत आसान करने की कोशिश कर रहा हूं और फिर भी, खोज करने के एक घंटे के बाद मुझे एक उपयुक्त उत्तर नहीं मिल रहा है, इसलिए मुझे कुछ स्पष्ट रूप से याद आना चाहिए।

मैं ifstream के साथ उपयोग के लिए गतिशील रूप से फ़ाइल नाम बनाने की कोशिश कर रहा हूँ। जबकि मैं समझता हूं कि ऐसा करने के लिए विभिन्न विधियां उपलब्ध हैं, मैं एक std :: स्ट्रिंग बनाने और कॉन्स्ट में कनवर्ट करने के लिए stringname.c_str का उपयोग करने के लिए बस गया हूं।

समस्या यह है कि मुझे चर और पूर्वनिर्धारित पाठ मानों के मिश्रण के साथ स्ट्रिंग बनाने की आवश्यकता है। मुझे कंपाइलर त्रुटियां मिल रही हैं, इसलिए यह एक वाक्यविन्यास मुद्दा होना चाहिए।

मिथ्या

std::string var = "sometext" + somevar + "sometext" + somevar;

धन्यवाद!


Answers

std::string var = "sometext" + somevar + "sometext" + somevar;

यह काम नहीं करता है क्योंकि जोड़ों को बाएं से दाएं और "sometext" - "sometext" (पहला वाला) किया जाता है, केवल एक "sometext" const char * । इसमें कॉल करने के लिए कोई operator+ नहीं है। सबसे आसान फिक्स यह है:

std::string var = std::string("sometext") + somevar + "sometext" + somevar;

अब, + ऑपरेशंस की बाएं से दाएं सूची में पहला पैरामीटर एक std::string , जिसमें operator+(const char *) । वह ऑपरेटर एक स्ट्रिंग का उत्पादन करता है, जो शेष श्रृंखला के काम को बनाता है।

आप सभी परिचालनों को var पर भी बना सकते हैं, जो एक std::string और इसलिए सभी आवश्यक ऑपरेटरों हैं:

var = "sometext";
var += somevar;
var += "sometext";
var += somevar;

क्या आपने स्ट्रिंगस्ट्रीम का उपयोग करने पर विचार किया है?

#include <string>
#include <sstream>

std::ostringstream oss;
oss << "sometext" << somevar << "sometext" << somevar;
std::string var = oss.str();

सी ++ 11 में आप std::to_string उपयोग कर सकते हैं:

std::string var = "sometext" + std::to_string(somevar) + "sometext" + std::to_string(somevar);  

यह भी देखें boost::format :

#include <boost/format.hpp>

std::string var = (boost::format("somtext %s sometext %s") % somevar % somevar).str();

यदि आप ऑल-कैप्स टेक्स्ट को दोबारा सुधारना चाहते हैं, तो आप अन्य उदाहरणों को इस प्रकार संशोधित करना चाहेंगे:

function capitalize (text) {
    return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}

यह सुनिश्चित करेगा कि निम्न पाठ बदल गया है:

TEST => Test
This Is A TeST => This is a test




c++ string variables std