C에서 출력을 문자열로 리디렉션하는 방법
다양한 디버깅 및 테스트 시나리오의 경우 표준 출력을 리디렉션하고 오류는 콘솔이 아닌 문자열로 스트리밍됩니다.
해결책: std::stringstream 사용
stdout/stderr을 문자열로 리디렉션하려면 std ::stringstream class:
<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>
이 가드 클래스는 예외가 발생하더라도 버퍼가 항상 원래 상태로 복원되도록 보장합니다.
위 내용은 C의 문자열에서 표준 출력 및 오류 스트림을 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!