.NET 스트림 라이터 출력을 문자열 변수로 리디렉션합니다
-
04-07-2019 - |
문제
스트림 라이터 출력을 변수로 리디렉션 할 수 있는지 알고 싶습니다.
같은 것
String^ myString;
StreamWriter sw = gcnew StreamWriter([somehow specify myString])
sw->WriteLine("Foo");
Mystring에는 foo가 포함됩니다. 내가 이것을하고 싶은 이유는 복잡한 기능을 재사용하는 것입니다. 아마도 그것을 문자열 반환 함수로 리팩토링해야하지만 여전히 아는 좋은 해킹 일 것입니다.
해결책
스트림 라이터 그리고 StringWriter 둘 다 TextWriter를 확장하면 Streamwriter를 사용하여 텍스트 작가를 사용하여 스트림이나 문자열에 쓸 수있는 메소드를 리팩터링 할 수 있습니까?
다른 팁
StringWriter와 함께 값을 String Builder Object에 직접 쓸 수 있습니다.
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