Domanda

Vorrei sapere se è possibile reindirizzare l'output di StreamWriter su una variabile

Qualcosa di simile

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

quindi myString conterrà Foo. La ragione per cui vorrei fare questo è riutilizzare una funzione complessa. Probabilmente dovrei trasformarlo in una funzione di ritorno String ma sarebbe comunque un bel trucco sapere

È stato utile?

Soluzione

StreamWriter e StringWriter entrambi estendono TextWriter, forse potresti riformattare il tuo metodo che utilizza StreamWriter per utilizzare TextWriter invece, in modo da poter scrivere su uno stream o una stringa?

Altri suggerimenti

Puoi farlo con StringWriter scrivendo il valore direttamente su un oggetto generatore di stringhe

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

Prova questo codice =]

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

Dovresti essere in grado di fare ciò di cui hai bisogno usando un flusso di memoria.

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

Rifattorizza il metodo per restituire la stringa come hai detto che potresti. Hacking nel modo in cui stai tentando, mentre accademicamente interessante, confonderà il codice e renderà molto difficile la manutenzione per chiunque ti segua.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top