I have a code like this
int main()
{
std::stringstream oss;
std::cerr.rdbuf( oss.rdbuf() );
std::cerr << "this goes to cerr";
std::cout << "[" << oss.str() << "]";
}
But i get the output of the program as
[this goes to cerr]Segmentation fault
How does the program segfault?
This is because you do not restore the buffer of
cerrbefore your program exits. Do it like this:See this answer of mine for a solution that is exception safe.