如何获取字符串形式的协议枚举?

How to get protobuf enum as string?(如何获取字符串形式的协议枚举?)
本文介绍了如何获取字符串形式的协议枚举?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在C++中获得等效于protocol buf枚举的字符串?

例如:

以下是消息说明:

package MyPackage;

message MyMessage
{
    enum RequestType
    {
        Login = 0;
        Logout = 1;
    }

    optional RequestType requestType = 1;
}

在我的代码中,我希望这样做:

MyMessage::RequestType requestType = MyMessage::RequestType::Login;

// requestTypeString will be "Login"
std::string requestTypeString = ProtobufEnumToString(requestType);

推荐答案

EnumDescriptor和EnumValueDescriptor类可用于此类操作,并且 生成的.pb.h.pb.cc名称非常容易阅读,因此您可以查看它们以获得有关它们提供的功能的详细信息。

在此特定情况下,以下组件应该可以工作(未经测试):

std::string requestTypeString = MyMessage_RequestType_Name(requestType);

这篇关于如何获取字符串形式的协议枚举?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

error when trying to run an overloaded function with float parameters.(尝试运行带有浮点参数的重载函数时出错。)
C++ lt;lt; operator overloading without friend function(没有友元函数的C++lt;lt;运算符重载)
C++ - How does the compiler decide between overloaded functions with reference types as parameter?(C++-编译器如何决定使用引用类型作为参数的重载函数?)
How can I invoke an overloaded () operator on the keyword this?(如何对关键字this调用重载()运算符?)
How do I denote a pure virtual function in a UML class diagram?(如何在UML类图中表示纯虚函数?)
MPI parallel IO in ASCII format (How do I do it?)(ASCII格式的MPI并行IO(我该怎么做?))