PROTOBUF INT64 检查先前输入的数据 c++

Posted

技术标签:

【中文标题】PROTOBUF INT64 检查先前输入的数据 c++【英文标题】:PROTOBUFF INT64 check aganist previously entered data c++ 【发布时间】:2015-08-24 13:50:20 【问题描述】:
message HealthOccurrenceCount

    required int64 HealthID=1; 
    required int32 OccCount=2; 
    optional bytes wci=3;

我想根据HealthID添加数据;如果已经输入了HealthID,那么程序应该只增加现有条目的OccCount,而不是添加新条目。

HealthOccurrenceCount objHelthOccCount;
if(objHelthOccCount.healthid() == healthID) // Is this right or do I need to iterate all the nodes?

    occCount++;  
    objHelthOccCount.set_occcount(occCount);  

else       
    occCount = 1;   

这段代码是否正确,或者我应该将HealthID 转换为字符串?

生成的代码:

// required int64 HealthID = 1;
inline bool has_healthid() const;
inline void clear_healthid();
static const int kHealthIDFieldNumber = 1;
inline ::google::protobuf::int64 healthid() const;
inline void set_healthid(::google::protobuf::int64 value);

【问题讨论】:

【参考方案1】:

根据doc,每个单数(必需或可选)字段都有一个 has_ 方法,如果该字段已设置,则返回 true。

您的代码将类似于:

        HealthOccurrenceCount objHelthOccCount;
        if(objHelthOccCount.has_healthid())
        
            occCount++;  
            objHelthOccCount.set_occcount(occCount);  
        
        else       
            occCount = 1; 

【讨论】:

以上是关于PROTOBUF INT64 检查先前输入的数据 c++的主要内容,如果未能解决你的问题,请参考以下文章

protobuf定义参数顺序与解析有关联么

Protobuf 中的等效数据类型

如何在数组中搜索先前已输入的 int 值

protobuf入门

在JAVA中使用protobuf3

Protobuf.net 异常 - 检查元数据时超时