将.NET StreamWriter输出重定向到String变量

时间:2008-10-24 20:31:25

标签: .net streamwriter

我想知道是否可以将StreamWriter输出重定向到变量

这样的东西
String^ myString;
StreamWriter sw = gcnew StreamWriter([somehow specify myString])
sw->WriteLine("Foo");

然后myString将包含Foo。 我想这样做的原因是重用一个复杂的函数。我应该将它重构为一个String返回函数,但它仍然是一个很好的黑客知道

5 个答案:

答案 0 :(得分:38)

您可以使用StringWriter将值直接写入字符串构建器对象

来执行此操作
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
// now, the StringWriter instance 'sw' will write to 'sb'

答案 1 :(得分:26)

StreamWriterStringWriter都扩展了TextWriter,也许你可以重构使用StreamWriter来使用TextWriter的方法,以便它可以写入流或字符串?

答案 2 :(得分:6)

试试这段代码=]

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

答案 3 :(得分:6)

你应该能够使用记忆流做你需要的事。

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

答案 4 :(得分:0)

重构方法以返回字符串,如您所提到的那样。以你学习的方式攻击它,虽然在学术上很有趣,但会使代码变得混乱,并且对于跟随你的人来说很难维护。