문제

스트림 라이터 출력을 변수로 리디렉션 할 수 있는지 알고 싶습니다.

같은 것

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

당신이 언급했듯이 문자열을 반환하는 메소드를 리팩터합니다. 학문적으로 흥미롭지 만 코드를 진흙 투성이로 해킹하고 당신을 따르는 사람을 위해 유지하기가 매우 어려워집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top