क्या कोई मुझे सी ++ में स्ट्रिंग स्ट्रीम का उपयोग करने पर कुछ व्यावहारिक उदाहरणों के बारे में बता सकता है, यानी स्ट्रीम प्रविष्टि और स्ट्रीम निष्कर्षण ऑपरेटरों का उपयोग करके स्ट्रिंग स्ट्रीम में इनपुट और आउटपुट करना?सी ++: स्ट्रिंग स्ट्रीम का क्या लाभ है?
उत्तर
आप स्ट्रिंग धाराओं का उपयोग कुछ भी है कि एक स्ट्रिंग के लिए operator <<
लागू करता है कन्वर्ट करने के लिए कर सकते हैं:
#include <sstream>
template<typename T>
std::string toString(const T& t)
{
std::ostringstream stream;
stream << t;
return stream.str();
}
या यहाँ तक कि
template <typename U, typename T>
U convert(const T& t)
{
std::stringstream stream;
stream << t;
U u;
stream >> u;
return u;
}
बस याद रखें कि यह समाधान केवल विशिष्ट वर्गों के साथ 'ऑपरेटर <<' के आदिम प्रकारों और अधिभारित संस्करणों के लिए काम करेगा। – fogo
@fogo: और चूंकि कक्षाओं के लिए स्ट्रीमिंग ऑपरेटरों को परिभाषित करना अपेक्षाकृत आम है, यह इतना बड़ा सौदा नहीं है। –
@ मार्टिन यॉर्क वास्तव में, मैंने जवाब में कुछ भी * टिप्पणी कन्वर्ट करने पर विचार करने के लिए एक उचित टिप्पणी मानी। – fogo
फायदे इसके अलावा वहाँ one point to carefully consider अगर आप जीसीसी 4.3.1 का उपयोग करें। मैंने जीसीसी के पिछले संस्करणों की जांच नहीं की थी।
के अनुसार उत्तर संपादित किया यह एक विशिष्ट कार्यान्वयन (जीसीसी) की एक सीमा थी। यह आप समस्या से जुड़े बगजिला बग के माध्यम से लिंक का पालन करते हैं, आप यह भी ध्यान देंगे कि बग को
का उपयोग नहीं किया गया है तो यह बहुत अच्छा है! मैं यह जानकारी जोड़ने के लिए अपनी पोस्ट संपादित करूंगा कि यह जानकारी केवल जीसीसी के कुछ संस्करणों के लिए प्रासंगिक है। –
उन्हें कहीं भी इस्तेमाल किया जा सकता है एक सामान्य धारा का उपयोग किया जा सकता है।
तो ऐसी परिस्थितियों में जहां आप एक फ़ाइल से पढ़ रहे थे, आप संभावित रूप से स्ट्रिंग स्ट्रीम से पढ़ सकते थे।
void compile(std::istream& str)
{
CPlusPlusLexer lexer(str);
CPlusPlusParser parser(lexer);
BackEnd backend(parser);
backend.compile();
}
int main()
{
std::fstream file("Plop.cpp");
compile(file);
std::stringstream test("#include <iostream>\n int main() { std::cout << \"H World\n\";}");
compile(test);
}
मैं उन्हें ज्यादातर स्मृति बफर के रूप में उपयोग करते हैं, बनाने संदेशों में:
if(someVector.size() > MAX_SIZE)
{
ostringstream buffer;
buffer << "Vector should not have " << someVector.size() << " eleements";
throw std::runtime_error(buffer.str());
}
या निर्माण करने के लिए जटिल तार:
std::string MyObject::GenerateDumpPath()
{
using namespace std;
std::ostringstream dumpPath;
// add the file name
dumpPath << "\\myobject."
<< setw(3) << setfill('0') << uniqueFileId
<< "." << boost::lexical_cast<std::string>(state)
<< "_" << ymd.year
<< "." << setw(2) << setfill('0') << ymd.month.as_number()
<< "." << ymd.day.as_number()
<< "_" << time.hours()
<< "." << time.minutes()
<< "." << time.seconds()
<< ".xml";
return dumpPath.str();
}
यह उपयोगी है, क्योंकि यह std::stream
के सभी तानाना लाता है चरित्र बफर का उपयोग करने के लिए (ostreams एक्स्टेंसिबिलिटी और लोकल सपोर्ट, बफर मेमोरी मैनेजमेंट छुपा हुआ है और इसी तरह)।
एक और उदाहरण मैंने देखा है, gsoap पुस्तकालय में रिपोर्टिंग त्रुटि थी निर्भरता इंजेक्शन का उपयोग कर:। soap_stream_fault में त्रुटि संदेश रिपोर्ट करने के लिए एक ostream & पैरामीटर लेता
क्या आप पास कर सकते हैं यह std :: cerr चाहते हैं, std :: cout या std :: ostringstream कार्यान्वयन (मैं इसे std :: ostringstream कार्यान्वयन के साथ उपयोग करता हूं)।
- 1. सी # सूचकांक का बिंदु या लाभ क्या है?
- 2. एंड्रॉइड स्ट्रीम में फ्लश() बंद() का उपयोग करने के लाभ?
- 3. सी ++ में "स्ट्रिंग", "स्ट्रीम" और "स्ट्रिंगस्ट्रीम" कक्षाएं क्या हैं?
- 4. सी # स्ट्रीम
- 5. प्रदर्शन लाभ/सी ++
- 6. इस नेट का लाभ क्या है
- 7. फ़ंक्शन ओवरलोडिंग का उपयोग/लाभ क्या है?
- 8. स्थिर कार्य का लाभ क्या है?
- 9. सी ++ इनपुट स्ट्रीम स्ट्रीम आउटपुट स्ट्रीम
- 10. मेमोरी स्ट्रीम से स्ट्रिंग
- 11. स्ट्रीम परिणामों को स्ट्रिंग
- 12. सी ++: स्ट्रीम
- 13. क्या जे # का उपयोग करने का वास्तविक लाभ है?
- 14. स्ट्रीम क्या है?
- 15. सी # सरणी क्यों हैं और यह क्या लाभ लाता है?
- 16. लाभ का निर्माण
- 17. स्ट्रीम टू स्ट्रिंग जावा/ग्रोवी
- 18. सी ++ स्ट्रीम ऑपरेटर प्रश्न
- 19. त्रुटि "यह स्ट्रीम सी #
- 20. सी ++ स्ट्रीम मेमोरी
- 21. मेमोरी स्ट्रीम सी #
- 22. बीटीआरई का लाभ?
- 23. सी # - स्ट्रीम प्रश्न
- 24. क्या कोई वेब सेवा स्ट्रीम स्ट्रीम कर सकती है?
- 25. ADO.NET इकाई फ्रेमवर्क का वास्तविक लाभ क्या है?
- 26. वापसी/बनाम बनाम वापसी का लाभ क्या है?
- 27. .NET 4 क्लाइंट प्रोफाइल का वास्तविक लाभ क्या है?
- 28. सीरियलाइजेशन असेंबली जेनरेट करने का लाभ क्या है?
- 29. प्रदर्शन विशेषता से DisplayName विशेषता का लाभ क्या है?
- 30. स्ट्रिंग का अपरिवर्तनीय होने का क्या फायदा है?
आपका मतलब है सिने और कोउट? सी-स्टाइल getc और printf के विरोध में? –
@ वैनेसा: ओपी का अर्थ है 'std :: stringstream', ('# शामिल') –
Bill
@ बिल: हाँ मेरा मतलब है! –