.NET StreamWriter出力を文字列変数にリダイレクトする
-
04-07-2019 - |
質問
StreamWriter出力を変数にリダイレクトできるかどうかを知りたい
次のようなもの
String^ myString;
StreamWriter sw = gcnew StreamWriter([somehow specify myString])
sw->WriteLine("Foo");
myStringにはFooが含まれます。 これを行う理由は、複雑な関数を再利用するためです。私はおそらくそれを文字列を返す関数にリファクタリングする必要がありますが、それはまだ知っておくと良いハックになります
解決
StreamWriter および 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);
メソッドをリファクタリングして、指定したとおりに文字列を返します。あなたが試みている方法でそれをハックすると、学問的に興味深い一方で、コードが濁り、あなたをフォローする人のために維持するのが非常に難しくなります。
所属していません StackOverflow