有没有办法创建一个基本上什么都不做的ostream实例?
例如 :
std::ostream dummyStream(...);
dummyStream << "Nothing will be printed";
Run Code Online (Sandbox Code Playgroud)
我可以创建一个ostringstream,但数据将被缓冲(我真的不想用它们做任何事情,所以它增加了无用的开销).
任何的想法 ?
[编辑]找到适合我需要的相关问题.但是,我认为如何使用标准c ++ 创建有效(无badbit)输出流的答案可能会有用.
我正在寻找一种可移植的方法来实现C++中用于记录类的延迟评估.假设我有一个简单的日志记录功能
void syslog(int priority, const char *format, ...);
Run Code Online (Sandbox Code Playgroud)
然后在syslog()函数中我们可以做到:
if (priority < current_priority)
return;
Run Code Online (Sandbox Code Playgroud)
所以我们从来没有实际调用格式化函数(sprintf).另一方面,如果我们使用像日志流一样
log << LOG_NOTICE << "test " << 123;
Run Code Online (Sandbox Code Playgroud)
所有的格式化总是被执行,这可能需要很长时间.是否有可能实际使用ostream的所有好东西(如类的自定义<<运算符,类型安全,优雅语法......),以便在检查日志记录级别后执行格式化?