2008-10-24 4 views
28

के उत्पादन मुझे पता है कि अगर यह की तरहपुनर्निर्देशन नेट StreamWriter एक स्ट्रिंग वैरिएबल

String^ myString; 
StreamWriter sw = gcnew StreamWriter([somehow specify myString]) 
sw->WriteLine("Foo"); 

एक चर

कुछ करने के लिए StreamWriter उत्पादन रीडायरेक्ट करने के लिए तो myString फू में शामिल होंगे संभव है करना चाहते हैं। कारण यह है कि मैं ऐसा करना चाहता हूं एक जटिल कार्य का पुन: उपयोग करना। मैं शायद एक स्ट्रिंग लौटने समारोह में यह refactor चाहिए लेकिन यह अभी भी पता करने के लिए

उत्तर

22

StreamWriter और StringWriter दोनों का विस्तार TextWriter एक अच्छा हैक हो सकता है, शायद आप अपने विधि के बजाय TextWriter उपयोग करने के लिए तो यह करने के लिए लिख सकता है StreamWriter का उपयोग करता है refactor सकता है या तो एक धारा या एक स्ट्रिंग?

+1

आपने मुझे कुछ सेकंड तक हराया! –

+0

मेरे मामले में अलास, विधि किसी तृतीय पक्ष लाइब्रेरी में है, मैं इसे बदल नहीं सकता। –

0

स्ट्रिंग को वापस करने के तरीके को रीफैक्टर करें जैसा आपने बताया था। जिस तरह से आप कोशिश कर रहे हैं, उसे अकादमिक रूप से दिलचस्प करते हुए, कोड को गड़बड़ कर देगा और आपके अनुसरण करने वाले किसी भी व्यक्ति के लिए इसे बनाए रखना बहुत कठिन बना देगा।

36

आप एक StringWriter एक स्ट्रिंग बिल्डर वस्तु

StringBuilder sb = new StringBuilder(); 
StringWriter sw = new StringWriter(sb); 
// now, the StringWriter instance 'sw' will write to 'sb' 
5

इस कोड को बाहर का प्रयास करने के लिए सीधे मूल्य लेखन के साथ ऐसा कर सकते हैं =]

StringBuilder sb = new StringBuilder(); 
StringWriter sw = new StringWriter(sb); 
string s = sb.ToString(); <-- Now it will be a string. 
4

आप क्या आप का उपयोग कर की जरूरत है ऐसा करने में सक्षम होना चाहिए एक मेमोरी स्ट्रीम।

MemoryStream mem = new MemoryStream(); 
StreamWriter sw = new StreamWriter(mem); 
sw.WriteLine("Foo"); 
// then later you should be able to get your string. 
// this is in c# but I am certain you can do something of the sort in C++ 
String result = System.Text.Encoding.UTF8.GetString(mem.ToArray(), 0, (int) mem.Length); 
संबंधित मुद्दे