相关疑难解决方法(0)

标准无操作输出流

有没有办法创建一个基本上什么都不做的ostream实例?

例如 :

std::ostream dummyStream(...);
dummyStream << "Nothing will be printed";
Run Code Online (Sandbox Code Playgroud)

我可以创建一个ostringstream,但数据将被缓冲(我真的不想用它们做任何事情,所以它增加了无用的开销).

任何的想法 ?

[编辑]找到适合我需要的相关问题.但是,我认为如何使用标准c ++ 创建有效(无badbit)输出流的答案可能会有用.

c++ iostream

40
推荐指数
3
解决办法
1万
查看次数

使用ostream C++运算符进行惰性求值

我正在寻找一种可移植的方法来实现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的所有好东西(如类的自定义<<运算符,类型安全,优雅语法......),以便在检查日志记录级别后执行格式化?

c++ logging iostream lazy-evaluation

8
推荐指数
1
解决办法
1679
查看次数

标签 统计

c++ ×2

iostream ×2

lazy-evaluation ×1

logging ×1