我正在处理以下问题:我在Ubuntu上,如果我把所有的流都涂成红色,例如使用下面的命令:
#include <iostream>
std::cout << "\033[31m" << "From now on the stream is red!";
所发生的情况是,从现在起,不仅std::cout
对象,而且std::cerr
和std::clog
对象也将显示红色字符串。
我想知道是否有办法只着色std::cout
输出,并让std::cerr
和std::clog
输出不变,在某种程度上能够做到:
#include <iostream>
std::cout << "\033[31m" << "From now on the std::cout stream is red!"; // red stream
std::cerr << "This stream is NOT red"; // normal stream (not colored)
std::clog << "This stream is NOT red"; // normal stream (not colored)
我需要的是一个“设置”(函数,类等)能够在程序开始时修复这个需求,并让它不变,直到结束。
我该怎么做呢?
1条答案
按热度按时间i7uq4tfw1#
经过几天的尝试,我找到了一个非常适合这个问题的解决方案,我只是创建了一个能够直接将更改应用到
std::ostream
对象的函子,以如下方式使用:这样的实现有点长,可以在here中找到。