interpreting non ascii codepoint
2024-10-22 05:08:27
ProtoBuf 在Windows VS2019 C++平台上的使用
这两天想着了解一下protobuf,搜索了一篇博客照着弄了一下
https://blog.csdn.net/weixin_44780793/article/details/120572110
有个问题是,我对着弄后定义的.proto文件生成的时候报错了
一开始我以为是文件里有中文注释要弄成ANSI格式,发现还是不行
怎么改都不行,后边发现是用了中文状态下的;
改回去英文的;就通过了...
=============分割线===============
自己弄了个.proto,想着试试是否支持map和vector,发现map和c++的map写法一样,要用vector(数组)得用repeated +类型,这个测试文件如下
syntax = "proto3"; message ItemData {
int32 ItemID = 1;
map<int32,string> pos = 2;
int32 ItemNum = 3;
repeated int64 arr = 4;
}
测试代码:
ItemData item;
item.set_itemid(100);
item.set_itemnum(25); // 设置map
item.clear_pos();
auto pos = item.mutable_pos();
pos->insert({ 1,"first" }); // 设置数组
item.clear_arr();
item.add_arr(666);
item.add_arr(888); std::string str;
str = item.SerializeAsString();
std::cout << "str:" << str << std::endl;
std::cout << "反序列化:" << std::endl; ItemData item1;
item1.ParseFromString(str);
std::cout<<"Id:"<<item1.itemid();
std::cout << " num:" << item1.itemnum() << std::endl;; // 解析map
for (auto it : item1.pos())
{
std::cout << " key:" << it.first << " value:" << it.second << std::endl;
}
// 解析数组
for (auto it : item.arr())
{
std::cout << "v:" << it;
}
ps:发现map不是直接用的std的map,操作接口有些不一样
结果正常:
关于protobuf的简单探讨先到此为止了
最新文章
- iOS网络4——Reachability检测网络状态
- D3.js学习(一)
- CentOS 7安装Sublime text3
- Failed to connect to JobMonApp on port 13491
- java中用线程解决进出水问题
- ITPub 上的一道题,学习下思路
- c++智能指针《一》 auto_ptr
- jsp定时方法
- ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式
- Android逆向基础----APK文件结构
- M. Subsequence 南昌邀请赛
- redis3.0.3集群搭建
- linux c使用socket进行http 通信,并接收任意大小的http响应(五)
- POJ2480 Longge&#39;s problem
- C++的MFC 与 HTML 双向通讯
- 函数作用域和块级作用域--你不知道的JavaScript
- codevs 1160
- Install NDK in Eclipse/Android Studio
- Linux下部署配置Nginx
- Windows8系统下设置Mongodb开机启动