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

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);

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

本文标题为:如何获取字符串形式的协议枚举?

基础教程推荐