एक विधि है कि एक stringstream लेता लिख सकते हैं और यह कुछ इस तरह दिखाई है,सी ++ के बाद stringstream का उपयोग << पैरामीटर के रूप में
void method(string str)
void printStringStream(StringStream& ss)
{
method(ss.str());
}
क्या यह संभव है और यह
stringstream var;
printStringStream(var << "Text" << intVar << "More text"<<floatvar);
की तरह कहा जा सकता है मैंने < < ऑपरेटर को देखा और ऐसा लगता है कि यह ostream&
ऑब्जेक्ट देता है लेकिन मैं शायद this
गलत पढ़ रहा हूं या इसे सही तरीके से कार्यान्वित नहीं कर रहा हूं।
वास्तव में मैं चाहता हूं कि एक स्ट्रिंग के रूप में सामान को एक साथ जोड़ने और इसे किसी फ़ंक्शन पर पास करने का एक साफ तरीका है। सबसे साफ चीज़ जो मैं पा सकता था वह एक स्ट्रिंगस्ट्रीम ऑब्जेक्ट था लेकिन यह अभी भी वांछित होने के लिए बहुत कुछ छोड़ देता है।
नोट्स:
मैं c++11
जवाब में से ज्यादा उपयोग नहीं कर सकते, क्योंकि मैं दृश्य स्टूडियो 2010 पर चल रहा हूँ (मेरी इच्छा के विरुद्ध, लेकिन अभी भी)
मैं Boost
की पहुंच है तो पागल हो जाना उस के साथ।
जब तक यह इस गड़बड़ी को साफ नहीं करता तब तक मैं एक कस्टम विधि के खिलाफ नहीं होगा।
संपादित करें:
@Mooing @PiotrNycz वाक्य रचना के साथ मिश्रित बतख का जवाब मैं इस तरह से लिखा कोड के अपने लक्ष्य को हासिल किया के साथ,
try{
//code
}catch(exception e)
{
printStringStream(stringstream() << "An exception has occurred.\n"
<<" Error: " << e.message
<<"\n If this persists please contact "<< contactInfo
<<"\n Sorry for the inconvenience");
}
इस रूप में स्वच्छ और पठनीय है के रूप में मैं आशाओं के अनुकूल हो के लिये।
उम्मीद है कि यह दूसरों को लेखन संदेश साफ़ करने में मदद करता है।
विजुअल स्टूडियो 11 में संपूर्ण सी ++ 11 लाइब्रेरी है, और कई भाषा विशेषताएं हैं। _Which_ विजुअल स्टूडियो आप तक सीमित हैं? इसके अलावा, पूंजीकरण के अलावा, कोड मेरी आंखों के लिए ठीक दिखता है; ठीक काम करना चाहिए। –
क्या आपने कोशिश की? यदि हां, तो क्या हुआ? यदि नहीं - क्यों? –
आप पहले स्ट्रीम को क्यों भरते हैं, फिर इसे तर्क के रूप में पास करते हैं? –