У меня есть 2 разных ostream, один из них cerr, использующий один и тот же потоковый буфер, у меня есть несколько библиотек, которые могли как-то изменить cerr (флаги? Модификаторы формата?).
cerr.rdbuf(&mystreambuffer);
ostream teststream(&mystreambuffer);
cerr << "This " << " is " << " a " << " test";
teststream << "This " << " is " << " a teststream " << " test";
печатает:
This
is
a
test
This is a teststream test
Отладка mystreambuffer
Я заметил, что cerr вызывает mystreambuffer->sync()
каждую <<
операцию, тогда как testtream вообще не вызывает ее.
Если я прав, cerr
это простотогда стандартный ostream, почему я вижу эту разницу во времени промывки?Как я могу сбросить cerr обратно к обычным операциям очистки?
РЕДАКТИРОВАТЬ: Я вижу, что вы, ребята, комментируете unitbuf и он по умолчанию в cerr, но если это было по умолчанию, не так линапиши здесь пошагово тоже?
#include <iostream>
int main(){
std::cerr << "This " << " is " << " a cerr " << " test\n";
std::cout << "This " << " is " << " a cout " << " test\n";
}
Cobain /tmp$ ./test
This is a cerr test
This is a cout test