假设我们将枚举实现operator<<
枚举值转换为字符串。是否可以在字符串构造期间调用此运算符或类似的东西?我当前的方法使用std::stringstream
调用&lt;&lt;枚举和从std::stringstream
中提取字符串。还有其他方法吗?使用std::cout <<
不是一种选择。
示例代码:
enum class Status {
OK,
ERROR
}
::std::ostream& operator<<(::std::ostream& os, Status status)
{
switch (status) {
case Status::OK:
return os << "OK";
case Status::ERROR:
return os << "ERROR";
}
用法:
Status s = Status::OK;
std::stringstream stream;
stream << s;
std::string statusString = s.str().c_str();
答案 0 :(得分:0)
不幸的是,这里没有任何优雅的解决方案。
如果我们只能这样做,我们可能会使用用户定义的转换,但它需要是一个非静态成员函数,enums
是不可能的。
但您可能总是使用与参数相关的查找,就像使用operator<<
一样。
或者,如果你想要字符串,制作一张地图并在那里放置所需的字符串。