C++ enum枚举的输出重载

我们在编写程序时经常会用到enum枚举类型,使用非常方便。但是当枚举定义较多时,在LOG打印时输出值很难直观的明白其含义,必须对照enum定义。本文介绍一个比较简单的方法,让LOG打印或std::cout输出枚举值时,直接输出文本。

#include <iostream>

// 枚举定义
enum RequestType {TYPE_POST, TYPE_GET}; 

// 重载enum RequestType类型的<<运算符 
inline std::ostream& operator<<(std::ostream& os, const RequestType req_type) {
    switch (req_type) {
        case RequestType::TYPE_POST: {
            os << "TYPE_POST";
            break;
        }
        case RequestType::TYPE_GET: {
            os << "TYPE_GET";
            break;
        }
        default: {
            os << "UNKNOWN";
            break;
        }
    }
    return os;
}

int main()
{
    auto A = RequestType::TYPE_POST;
    auto B = RequestType::TYPE_GET;

    // 测试cout输出
    std::cout << A << " - " << B << std::endl;
    return 0;
}

// 输出效果:TYPE_POST - TYPE_GET

 

yan 23.8.17

欢迎关注下方“非著名资深码农“公众号进行交流~

发表评论

邮箱地址不会被公开。