Я подумал о маленькой встроенной функции отладки в C ++:
void inline debug( int debug_level, ostream& out ) {
if ( debug_level <= verbosity ) {
out.flush();
}
else {
ostream tmp;
tmp << out;
}
}
Это пример того, как я хотел его использовать:
_debug( 7, cout << "Something something" << someint << endl );
Однако это не работает так, как я планировал - я хотел, чтобы оно печатало сообщение, только если уровень детализации выше или равен уровню отладки, переданному в функцию, но, похоже, он печатается каждый раз, независимо от уровня отладки, поэтому данные остаются в буфере Cout. Сейчас я думаю, что эта функция не самая лучшая идея, которая у меня была в последнее время, но все же я хочу знать, есть ли способ очистить буфер, связанный с cout, cerr и т. Д. Возможно ли заставить эту функцию работать должным образом?