cpp 如何遍历protobuf repeated类型
时间: 2023-07-04 19:10:51 浏览: 1110
在 C++ 中,可以使用迭代器(iterator)来遍历 Protobuf 的 repeated 类型。具体步骤如下:
1. 获取 repeated 类型的迭代器:
```c++
auto it = message.repeated_field_name().begin();
```
其中,`message` 是包含 repeated 字段的 Protobuf 消息对象,`repeated_field_name()` 是该字段的访问方法,返回一个迭代器对象。
2. 遍历 repeated 类型:
```c++
for (; it != message.repeated_field_name().end(); ++it) {
// 处理 repeated 类型
}
```
其中,`end()` 方法返回一个迭代器,指向 repeated 类型的结尾,遍历过程中,可以使用 `*it` 获取当前元素的值。
完整示例代码如下:
```c++
#include <iostream>
#include "test.pb.h" // 引入 Protobuf 自动生成的头文件
int main() {
// 创建 Protobuf 消息对象
TestMessage message;
// 添加 repeated 类型的字段
message.add_repeated_field(1);
message.add_repeated_field(2);
message.add_repeated_field(3);
// 遍历 repeated 类型
auto it = message.repeated_field().begin();
for (; it != message.repeated_field().end(); ++it) {
std::cout << *it << std::endl;
}
return 0;
}
```
上述代码中,`TestMessage` 是 Protobuf 文件中定义的消息类型,包含一个名为 `repeated_field` 的 repeated 类型的字段。遍历过程中,输出每个元素的值。
希望这能够帮助到你!
阅读全文