相关疑难解决方法(0)

C++或库中是否存在null std :: ostream实现?

我正在寻找一个std::ostream类似的实现/dev/null.它会忽略流向它的任何内容.标准库或Boost中是否存在这样的事情?或者我必须自己动手?

c++ null ostream

50
推荐指数
5
解决办法
2万
查看次数

实现no-op std :: ostream

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

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

谢谢.

c++ debugging logging

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

用ostream打印到无处

我想将数据发送到任何地方,我的意思是我不想在控制台或文件中打印数据,但我需要一些std::ostream对象.怎么做?

c++ printing stream

9
推荐指数
2
解决办法
5892
查看次数

用C++短路`operator <<`输出

我有一些代码,像这样的构造

if(debug) {
    Output << "f1: " << f1() << "\n";
}
Run Code Online (Sandbox Code Playgroud)

现在我想要做的是编写一个流类Debug,我可以像这样编写它

Debug << "f1: " << f1() << "\n";
Run Code Online (Sandbox Code Playgroud)

如果设置了某个全局标志,那么这将生成输出,否则不会.

现在:通过Debug返回一个/dev/null吞噬输出的流可以很容易地做到这一点.问题是f1()仍然会被评估(并"渲染"成文本表示,这可能会更加昂贵),这可能对性能非常不利.

现在我的问题是:是否有任何技巧可以跳过"评估"

"f1: " << f1() << "\n"
Run Code Online (Sandbox Code Playgroud)

完全如果Debug决定不应该输出?到短路是C++做类似的f() && g()地方g(),如果不计算f()false(我认真考虑编写一个使用流类&&作为输出操作,但是从我读短路没有重载完成operator&&)

c++

4
推荐指数
1
解决办法
518
查看次数

std :: ostream作为可选(!)函数参数

我想声明一个std::out默认写入的函数,但也可以选择启用写入另一个输出流(如果有的话).例如:

print_function(std::string & str, 
               std::ostream & out = std::cout, 
               std::ostream & other = nullptr) // <-- how to make it optional???
{
    out << str;
    if (other == something) // if optional 'other' argument is provided
    {
        other << str;
    }
}
Run Code Online (Sandbox Code Playgroud)

设置nullprt显然不起作用,但如何做到这一点?

c++ cout optional-parameters ostream

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

标签 统计

c++ ×5

ostream ×2

cout ×1

debugging ×1

logging ×1

null ×1

optional-parameters ×1

printing ×1

stream ×1