首页 > 其他分享 >Code-Logger-替换标准输出和标准错误,并通过宏使能输出

Code-Logger-替换标准输出和标准错误,并通过宏使能输出

时间:2024-07-12 13:20:37浏览次数:9  
标签:输出 Code 宏使 标准 Logger include

Code-Logger-替换标准输出和标准错误,并通过宏使能输出

需求:替换标准输出和标准错误,并通过宏使能输出

  • class Logger

#ifndef ENABLE_LOGS
#define ENABLE_LOGS 1 // 设置为1表示启用日志输出,0则禁用
#endif

#include <iostream>
#include <sstream>

class Logger {
public:
    template<typename T>
    Logger& operator<<(const T& value) {
        if (ENABLE_LOGS) {
            stream_ << value;
        }
        return *this;
    }

    // 当需要输出时,调用此函数
    void printCOUT() {
        if (ENABLE_LOGS) {
            std::cout << stream_.str() << std::endl;
            stream_.str(""); // 清空stringstream
        }
    }

    void printCERR() {
        if (ENABLE_LOGS) {
            std::cerr << stream_.str() << std::endl;
            stream_.str(""); // 清空stringstream
        }
    }

private:
    std::stringstream stream_;
};
  • Demo
#include "logger.h" // 假设上面的Logger定义在这个文件中

void exampleUsage() {
    Logger() << "这是一个例子: " << 123 << " 和 " << 45.67 << std::endl;
    // 或者使用print方法
    Logger log;
    log << "另一个例子: " << true << " 在行尾不需要手动换行";
    log.printCOUT();
}

标签:输出,Code,宏使,标准,Logger,include
From: https://www.cnblogs.com/yongchao/p/18298178

相关文章

  • 【atcoder】习题——位元枚举
    题意:求i&M的popcount的和,i属于0……N主要思路还是变加为乘。举个例子N=22,即10110假设M的第3位是1,分析N中:00110001110010000101发现其实等价于0010001100000001也就是左边第4位和第5位不变,右边第1位和第2位不变拼接起来,相当于0000~001101110011110110001101......
  • CodeForces - 1987F1 & CodeForces - 1987F2
    分析首先显然有dp状态\(g_i\)表示前\(i\)个数,能进行最大的操作次数。转移有\(g_i=\max\limits_{j=1}^{i-1}(g_j+\frac{i-j}{2})[2|(i-j)]\)但这里显然缺少转移条件。经过基本观察,发现若\(i\)操作过,满足条件:\(a_i\equivi(mod\2)\)\(i\)左侧操作过\(\frac{i-......
  • Codeforces Round 957 (Div. 3)
    推荐个C++编程仓库模板https://github.com/yxc-s/programming-templateA.OnlyPluses总结:为什么优先增加最小的数,它们的乘积会是最优的呢?可以这么理解,假如只有两个数a和b,b>a,那么a+1,就增加一份b。如果b+1,只能增加1份a。因为b>a,所以增加小的数是最优的。voidsolve(){......
  • LeetCode 2950. 可整除子串的数量
    2950.可整除子串的数量每个英文字母都被映射到一个数字,如下所示。如果字符串的字符的映射值的总和可以被字符串的长度整除,则该字符串是 可整除 的。给定一个字符串 s,请返回 s 的 可整除子串 的数量。子串 是字符串内的一个连续的非空字符序列。示例1:Substrin......
  • 编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、 通过(60~84
    /编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。/#include<stdio.h>voidfun(int*score,intn){intoutstanding=0;intpass=0;intflunk=0;for(inti=0;i<n;i++){if(sc......
  • 输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数
    /输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。/#include<stdio.h>intabs(inta){returna>=0?a:-a;}intmain(void){intnums[10];inti,min_abs_index=0;printf("pleaseentertennumber\n");for(i......
  • JAVA中输入输出要注意的地方
    1.输出System.out.println(msg);//输出一个字符串,带换行System.out.print(msg);//输出一个字符串,不带换行System.out.printf(format,msg);//格式化输出println输出的内容自带\n,print不带\nprintf的格式化输出方式和C语言的printf是......
  • T5架构和主流llama3架构有什么区别和优缺点、transformer中encoder 和decoder的不同、
    T5架构和主流llama3架构有什么区别和优缺点T5和LLaMA是两种在自然语言处理(NLP)领域广泛应用的大型语言模型,它们在架构和应用上有显著的区别和各自的优缺点。T5架构架构特点:Encoder-Decoder结构:T5(Text-to-TextTransferTransformer)采用了经典的Encoder-DecoderTransform......
  • 代码随想录算法训练营第六天 | Python | LeetCode242.有效的字母异位词、LeetCode349.
    哈希表理论https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html一般哈希表都是用来快速判断一个元素是否出现集合里。数组/set/mapLeetCode242.有效的字母异位词题目链接:https://leetcode.cn/problems/valid-anagr......
  • 代码随想录算法训练营第四天 | Python | LeetCode24.两两交换链表中的节点、19.删除链
    LeetCode24.两两交换链表中的节点题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/description/文章/视频链接:https://programmercarl.com/0024.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.html#%E7%AE%9......