Если я понимаю, о чем вы спрашиваете, ближайший эквивалент перенаправления оболочки для функции, использующей std::cout
для вывода, - это, вероятно, временное переключение внутреннего потокового буфера std::cout
на другой.
Конечно, это по своей сути не поточно-ориентированный и не справится, если сама функция ожидает, что std::cout
и stdout
будут одной и той же базовой вещью.
#include <iostream>
#include <sstream>
int main()
{
std::stringbuf redir( std::ios_base::out );
std::streambuf* save = std::cout.rdbuf( &redir );
my_function(); // cout output ends up in redir
std::cout.rdbuf( save ); // restore original cout
}