stdout/stderr을 문자열로 리디렉션
많은 토론이 stdout/stderr을 파일로 리디렉션하는 데 중점을 두었습니다. 그러나 이 출력을 문자열로 리디렉션할 수 있습니까?
해결책
예, std::stringstream 개체로의 리디렉션이 가능합니다.
<code class="cpp">std::stringstream buffer; std::streambuf * old = std::cout.rdbuf(buffer.rdbuf()); std::cout << "Bla" << std::endl; std::string text = buffer.str(); // text will now contain "Bla\n"</code>
버퍼의 자동 재설정을 보장하려면 가드 클래스 사용을 고려하세요.
<code class="cpp">struct cout_redirect { cout_redirect( std::streambuf * new_buffer ) : old( std::cout.rdbuf( new_buffer ) ) { } ~cout_redirect( ) { std::cout.rdbuf( old ); } private: std::streambuf * old; };</code>
위 내용은 표준 출력(stdout) 및 표준 오류(stderr)를 C의 문자열로 리디렉션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!