草庐IT

mad_stream_buffer

全部标签

c++ - 带有 Protocol Buffer 的 GzipOutputStream 和 GzipInputStream 的简单工作示例

在对ProtocolBuffers进行了几天的试验后,我尝试压缩文件。使用Python,这很容易做到,不需要任何游戏与溪流。因为我们的大部分代码都是用C++编写的,所以我想压缩/解压相同语言的文件。我试过boostgzip库,但无法让它工作(不压缩):intwriteEventCollection(HEP::MyProtoBufClass*protobuf,std::stringfilename,unsignedintcompressionLevel){ofstreamfile(filename.c_str(),ios_base::out|ios_base::binary);filte

c++ - 文章 Generic<Programming> Typed Buffers 在 C++ 11 中是否完全过时?

我正在阅读GenericTypedBuffers,一篇来自AndreiAlexandrescu的相当古老的文章。我想知道它是否仍然有意义。在他的文章中,Alexandrescu指出了当性能至关重要时std::vector的一些问题:分配vector时不必要的数据初始化,我认为可以使用std::vector::reserve解决使用C++11和移动语义解决的昂贵移动操作大多数编译器不会通过使用std::memcpy和std为char等类型优化std::vector::memmove。现在对于主流编译器来说这是不正确的(据我所见)。指数级增长。您无法通过简单的方法调用来缩小std::vec

c++ - 在 Google Protocol Buffers 中对消息的重复字段中的项目进行排序

protocolbuffers库中是否有允许对指定为重复字段的数组进行排序的实现?例如,假设数组由一种类型的项组成,该类型本身包含一个索引字段,数组项需要根据该索引字段进行排序。我找不到它,所以我想我必须自己写一个。只是想确认一下。谢谢。 最佳答案 Protobufs通过mutable_*方法提供RepeatedPtr接口(interface),可以使用std::sort()模板进行排序。除非重复字段的基础类型是简单类型,否则您可能希望使用重载的运算符messageStaffMember{optionalstringname=1;o

c++ - Protocol Buffers 是否支持移动构造函数

我检查了moveconstructor规范和Messageconstructor来源,但没有找到。如果没有,有人知道添加它的计划吗?我正在使用proto3语法,编写一个库并考虑通过值返回与unique_ptr之间的关系。 最佳答案 根据https://github.com/google/protobuf/issues/2791这将在Protobuf版本3.4.0中得到支持。 关于c++-ProtocolBuffers是否支持移动构造函数,我们在StackOverflow上找到一个类似的问

kotlin 中的 Java 8 stream.collect(Collectors.toMap()) 模拟

假设我有一个人员列表并且想要Map,其中String是人名。我应该如何在kotlin中做到这一点? 最佳答案 假设你有vallist:List=listOf(Person("Ann",19),Person("John",23))associateBy功能可能会让你满意:valmap=list.associateBy({it.name},{it.age})/*Contains:*"Ann"->19*"John"->23*/正如KDoc中所说,associateBy:ReturnsaMapcontainingthevaluesprovi

kotlin 中的 Java 8 stream.collect(Collectors.toMap()) 模拟

假设我有一个人员列表并且想要Map,其中String是人名。我应该如何在kotlin中做到这一点? 最佳答案 假设你有vallist:List=listOf(Person("Ann",19),Person("John",23))associateBy功能可能会让你满意:valmap=list.associateBy({it.name},{it.age})/*Contains:*"Ann"->19*"John"->23*/正如KDoc中所说,associateBy:ReturnsaMapcontainingthevaluesprovi

c++ - Google Protocol Buffers - 缺少必填字段,即使所有字段显然都存在

我正在尝试通过TCP发送ProtocolBuffer消息,但在接收方尝试解析时出现“缺少必填字段”错误,即使显然所有字段都在那里。我在包含消息长度的消息之前发送一个4字节的header。消息定义如下:messageReplayRequest{requiredstringchannel=1;requireduint32start=2;requireduint32end=3;}在客户端,我对header进行编码并将消息序列化为vector。ReplayRequestreq;req.set_channel("channel")req.set_start(1);req.set_end(5);i

c++ - 强制 boost::asio::buffer 按值复制

我使用boost::asio::buffer来发送消息voidSend(conststd::string&messageData){socket.async_write(boost::asio::buffer(messageData),...);}并且在io_service线程的某处遇到“字符串迭代器不可取消引用”运行时错误。当我创建对象的变量来存储缓冲区的消息数据时:voidSend(conststd::string&messageData){this->tempStorage=messageData;socket.async_write(boost::asio::buffer(th

c++ - 解析 Google Protocol Buffer 的文本文件

根据示例代码https://developers.google.com/protocol-buffers/docs/cpptutorial,它们展示了如何在二进制格式的原型(prototype)文件中进行解析。使用tutorial::AddressBookaddress_book;{//Readtheexistingaddressbook.fstreaminput(argv[1],ios::in|ios::binary);if(!address_book.ParseFromIstream(&input)){cerr我尝试为文本格式的输入文件删除ios::binary,但仍然无法读取文件

c++ - stream::seekoff 是否更新输入序列?

在[filebuf.virtuals]:pos_typeseekoff(off_typeoff,ios_base::seekdirway,ios_base::openmodewhich=ios_base::in|ios_base::out)override;Effects:Letwidthdenotea_­codecvt.encoding().Ifis_­open()==false,oroff!=0&&width,thenthepositioningoperationfails.Otherwise,ifway!=basic_­ios​::​curoroff!=0,andifthelas