मैं C ++ में स्ट्रिंगस्ट्रीम से स्ट्रिंग में कैसे परिवर्तित करूं?


124

मैं कैसे से परिवर्तित करना std::stringstreamकरने के लिए std::stringC ++?

क्या मुझे स्ट्रिंग स्ट्रीम पर एक विधि को कॉल करने की आवश्यकता है?


4
क्या आपने अपने पिछले प्रश्न का उत्तर पढ़ा था, जिसने इसे कवर किया था?

जवाबों:



74

.Str () - विधि का प्रयोग करें :

अंतर्निहित स्ट्रिंग ऑब्जेक्ट की सामग्री का प्रबंधन करता है।

1) अंतर्निहित स्ट्रिंग की एक प्रति लौटाता है जैसे कि कॉल करके rdbuf()->str()

2) अंतर्निहित स्ट्रिंग की सामग्री को प्रतिस्थापित करता है जैसे कि कॉल करके rdbuf()->str(new_str)...

टिप्पणियाँ

स्ट्रिंग द्वारा लौटाए गए अंतर्निहित स्ट्रिंग की प्रतिलिपि एक अस्थायी वस्तु है, जिसे अभिव्यक्ति के अंत में नष्ट कर दिया जाएगा, इसलिए सीधे (उदाहरण के लिए ) के परिणाम c_str()पर कॉल करना एक लटकने वाले सूचक में परिणाम ...str()auto *ptr = out.str().c_str();


14

std::stringstream::str() वह विधि है जिसकी आप तलाश कर रहे हैं।

के साथ std::stringstream:

template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
    std::stringstream ss;
    ss << NumericValue;
    return ss.str();
}

std::stringstreamएक अधिक सामान्य उपकरण है। आप std::ostringstreamइस विशिष्ट नौकरी के लिए अधिक विशिष्ट वर्ग का उपयोग कर सकते हैं ।

template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
    std::ostringstream oss;
    oss << NumericValue;
    return oss.str();
}

यदि आप std::wstringतार के साथ काम कर रहे हैं, तो आपको पसंद करना चाहिए std::wstringstreamया std::wostringstreamइसके बजाय।

template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
    std::wostringstream woss;
    woss << NumericValue;
    return woss.str();
}

यदि आप चाहते हैं कि आपके स्ट्रिंग का चरित्र प्रकार रन-टाइम चयन योग्य हो, तो आपको इसे एक टेम्प्लेट चर भी बनाना चाहिए।

template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
    std::basic_ostringstream<CharType> oss;
    oss << NumericValue;
    return oss.str();
}

उपरोक्त सभी विधियों के लिए, आपको निम्नलिखित दो हेडर फ़ाइलों को शामिल करना होगा।

#include <string>
#include <sstream>

ध्यान दें, NumericValueऊपर दिए गए उदाहरणों में तर्क को क्रमशः और उदाहरणों के साथ std::stringया के रूप में std::wstringउपयोग किया जा सकता है। संख्यात्मक मान होना आवश्यक नहीं है ।std::ostringstreamstd::wostringstreamNumericValue


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.