إعادة توجيه الإخراج. NET StreamWriter لمتغير سلسلة

StackOverflow https://stackoverflow.com/questions/235156

  •  04-07-2019
  •  | 
  •  

سؤال

وأود أن أعرف ما إذا كان من الممكن إعادة توجيه الإخراج StreamWriter لمتغير

وشيء من هذا القبيل

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

وبعد ذلك myString سيتضمن فو. السبب أود أن قيام بذلك هو إعادة استخدام وظيفة معقدة. وربما ينبغي أن ريفاكتور قبل أن تتحول إلى وظيفة عودته سلسلة لكنه لا يزال سيكون الإختراق من الجميل أن نعرف

هل كانت مفيدة؟

المحلول

StreamWriter و <لأ href = "HTTP : //msdn.microsoft.com/en-us/library/system.io.stringwriter.aspx "يختلط =" noreferrer "> StringWriter كلا تمديد TextWriter، وربما كنت قد ريفاكتور طريقتك يستخدم StreamWriter لاستخدام TextWriter بدلا من ذلك حتى يتمكن من الكتابة إلى أي تيار أو سلسلة؟

نصائح أخرى

ويمكنك القيام بذلك مع StringWriter كتابة قيمة مباشرة إلى كائن بناء سلسلة

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

وجرب هذا الرمز =]

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

ويجب أن تكون قادرة على القيام بما تحتاج باستخدام تيار الذاكرة.

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);

وريفاكتور طريقة للعودة سلسلة كما ذكرت لك يمكن. القرصنة بالطريقة التي تحاول، في حين أكاديميا مثيرة للاهتمام، وتعكير رمز وتجعل من الصعب جدا للحفاظ على أي شخص أن يتابعك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top