Używam biblioteki, która drukuje komunikat ostrzegawczy na cout
lub cerr
. Nie chcę, aby ten komunikat ostrzegawczy dotarł do wyjścia mojego programu. Jak mogę złapać to wyjście i umieścić je w /dev/null
lub podobnym?Przekierowanie wyjścia funkcji do/dev/null
MWE:
#include <iostream>
void foo()
{
std::cout << "Boring message. " << std::endl;
};
int main()
{
foo();
std::cout << "Interesting message." << std::endl;
return 0;
}
Wyjście powinno być:
Interesting message.
Jak należy zmodyfikować main
aby uzyskać pożądany wynik? (foo
nie musi być zmieniana.)
Próbowałem za pomocą freopen()
i fclose(stdout)
jak zasugerowano w tej kwestii How can I redirect stdout to some visible display in a Windows Application?. W rezultacie nic nie jest drukowane.
Dziękuję za te prace, jednak postanowiłem oznaczyć drugą odpowiedź jako zaakceptowaną odpowiedź. – Unapiedra
Dzięki @Unapiedra. Maniery zawsze doceniane :) – wreckgar23
Czy mogę zaproponować zapisanie bieżącego stanu przez 'rdstate', a następnie zresetowanie go do tego? To trochę bezpieczniejsze niż oczyszczanie stanu strumienia. – SirGuy