gpt4 book ai didi

c++ - C++ 中的 C# 样式枚举

转载 作者:行者123 更新时间:2023-11-30 01:22:42 26 4
gpt4 key购买 nike

我正在尝试编写一个使用外部工具的日志库

我正在寻找方便的方法来将键字符串添加到输出流以帮助外部工具进行解析,同时对使用该库的程序员的影响最小

目标是实现这样的目标:

cout << DEBUG::VERBOSE << "A should equal 3" << endl;
cout << DEBUG::WARNING << "something went wrong" << endl;

目前我的数据结构如下

struct Debug
{
static const std::string FATAL_ERROR;
static const std::string ERROR;
static const std::string WARNING;
static const std::string IMPORTANT;
static const std::string INFORMATION;
static const std::string VERBOSE;
static const std::string DEBUG;
};

这可以找到,但我想从 std::string 类型中添加一个抽象级别。

在 Java/C# 中,我可以使用 enum 来实现写入行为,我如何在 C++ 中优雅地实现它。

最佳答案

我认为在 C++ iostream 中,endl 风格的流操纵器更符合惯用语:

#include <iostream>

namespace debug
{
std::ostream & info(std::ostream & os) { return os << "Info: "; }
std::ostream & warn(std::ostream & os) { return os << "Warning: "; }
std::ostream & error(std::ostream & os) { return os << "Error: "; }
}

int main()
{
std::cout << debug::info << "This is main()\n"
<< debug::error << "Everything is broken\n";
}

关于c++ - C++ 中的 C# 样式枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15891378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com