相关疑难解决方法(0)

实现no-op std :: ostream

我正在寻找一个日志类,其中包含Info,Error等成员,可以配置输出到控制台,文件或无处.

为了提高效率,我希望避免格式化将要丢弃的消息的开销(即,不以详细模式运行时的信息消息).如果我实现一个输出到无处的自定义std :: streambuf,我想std :: ostream层仍将执行所有格式化.任何人都可以建议一种方法来拥有一个真正的"空"std :: ostream,它可以避免在传递给它的参数上做任何工作<<吗?

谢谢.

c++ debugging logging

32
推荐指数
3
解决办法
7782
查看次数

从空缓冲区构造`std :: ostream`是否有效?

考虑以下:

std::ostream out(nullptr);
Run Code Online (Sandbox Code Playgroud)

这是合法的,定义明确吗?


如果我现在这样做:

out << "hello world\n";
Run Code Online (Sandbox Code Playgroud)

这是合法的,定义明确吗?如果是这样的话,大概这是一种无操作?

c++ iostream std c++11

20
推荐指数
1
解决办法
1171
查看次数

自己的输出流(模拟cout)

这是一个示例C++代码

ostream& log = cout;
ostream& getLog() { return log; }

// somewhere in code
getLog() << "Message";
Run Code Online (Sandbox Code Playgroud)

执行此代码时,将打印"消息".

问:丢弃这些消息的最简单方法是什么(不打印,不保存)?getLog仍然必须由客户端使用,但可能会返回一些吞下所有消息的模拟输出流...

c++ io std ostream

2
推荐指数
1
解决办法
792
查看次数

标签 统计

c++ ×3

std ×2

c++11 ×1

debugging ×1

io ×1

iostream ×1

logging ×1

ostream ×1