草庐IT

c++ - 如何使用 Protocol Buffer ?

有人可以帮助并告诉我如何使用ProtocolBuffer。实际上,我想通过套接字在unix上运行的程序和另一个在windows上运行的程序之间交换数据,以便运行模拟研究。使用套接字交换数据的程序是用C/C++编写的,如果somne​​one可以帮助我使用ProtocolBuffer以便以以下形式交换数据,我将很高兴:structsnd_data{char*var="temp";intvar1=1;floatvar2;doublevar2;}我尝试了几种方法,但仍然无法正确交换数据。任何帮助将不胜感激谢谢你的帮助, 最佳答案 您首先在

c++ - 将 boost::array<char> 复制到 std::string

我正在尝试cvopyboost::array至std::string.boost::array_buffer;std::stringdata;std::copy(_buffer.begin(),_buffer.begin()+bytes_transferred,data.begin());这是行不通的。所以我稍微改变了一下。char_buffer[1024];std::stringdata;std::copy(_buffer,_buffer+bytes_transferred,data.begin());第二个也不起作用。 最佳答案

c++ - 使用顶点缓冲对象 (VBO) 渲染 Kinect 点云

我正在尝试制作动态点云可视化工具。使用Kinect传感器每帧更新这些点。为了抓取帧,我使用OpenCV和GLUT来显示。OpenCVAPI为点xyz位置返回640x480(float*),为rgb颜色数据返回640x480(int*)。为了获得最佳性能,我尝试在流模式下使用顶点缓冲区对象而不是简单的顶点数组。我能够用顶点数组渲染它,但我的VBO实现没有渲染任何东西。我在声明中尝试了一堆不同的命令,但我找不到我遗漏的东西。有人可以指出我正确的方向吗?这是简化的代码:(我按照ChristianRau的要求重写了错误的版本,所以你们可以理解我的错误)intmain(){//Delaringv

c++ - 内存池和缓冲区 C++

我有几个关于缓冲区和内存池的问题,我想得到解答。假设我有一个服务器,每秒发送和接收~50-100+条消息。所有消息都有各种大小。您将如何着手充分利用此处的内存管理?我最初的计划是使用固定大小的缓冲区节点,并将它们合并在一起,例如:structbuffer{uint8_tdata[512];uint32_tend;buffer*next;}buffer*b=pool_get_new_buffer();因此,当发送一条消息时,我会根据大小创建一个或多个缓冲区并将它们链接在一起。这样我就不用担心池中的碎片了。(或者至少我是这么认为的)。但是在小消息上,这是浪费空间。但是看的越来越多,上网查代

c++ - boost::asio::buffer:获取缓冲区大小并防止缓冲区溢出?

我有以下两个发送和接收数据包的函数。voidsend(std::stringprotocol){char*request=newchar[protocol.size()+1];request[protocol.size()]=0;memcpy(request,protocol.c_str(),protocol.size());request_length=std::strlen(request);boost::asio::write(s,boost::asio::buffer(request,request_length));}voidreceive(){charreply[max_l

c++ - 使用 boost::asio::streambuf

寻找boost::asio(以及自己的boost)决定编写异步服务器。为了存储传入数据,我使用boost::asio::streambuf。在这里我有一个问题。当我收到来自客户端的第二条消息和随后的消息时,我看到缓冲区中包含来自先前消息的数据。尽管我在输入缓冲区调用了Consume方法。怎么了?classtcp_connection//Usingshared_ptrandenable_shared_from_this//becausewewanttokeepthetcp_connectionobjectalive//aslongasthereisanoperationthatrefer

c++ - 使用 C++ 流读取格式化输入

当使用stdio.h时,我可以像这样轻松读取某些类型的格式化输入:FILE*fin=fopen(...);fscanf(fin,"x=%d,y=%d",&x,&y);这样做的好处是,我真的不必担心字符“x”和后面的“=”之间有多少空格,以及其他小细节。在我看来,在C++中,ifstreamfin(...);strings;fin>>s;可能导致s为"x"或"x=",甚至"x=12"取决于输入的间距。有没有一种方便的方法可以使用iostream/fstream获得类似于scanf/fscanf的行为? 最佳答案 如果有先决条件,这实际

c++ - Protocol Buffer 中缺少带有协议(protocol)的输入文件

目前我的protoc.exe旁边有一个名为addressbook.proto的文件。我在生成.h和.cc文件时遇到困难。这是我正在做的protoc--cpp_out=c:\addressbook.proto但是我得到以下响应Missinginputfile.对我可能做错了什么有什么建议吗? 最佳答案 -cpp_out标签指定生成的c源代码的输出目录。我会建议尝试(如果proto实际上存储在c:目录下c:\addressbook.proto)protocc:\addressbook.proto--cpp_out=./或protocad

c++ - 将字符数组中的元素范围提取到字符串中

我想从char数组的开头提取一系列元素并将它们放入字符串中。范围可能小于或等于元素的数量。这是我想出来的。//bufferisastd::arraystd::stringmessage;for(inti=0;i有更好的方法吗?我一直在研究类似std::string的迭代器构造函数之类的东西。例如。std::string(buffer.begin(),buffer.end())但我不想要所有元素。谢谢。 最佳答案 您不必一直走到结束:std::string(buffer.begin(),buffer.begin()+numberToE

c++ - 如何在 C++ 中使用 winsock 接收 udp 数据包?

作为对udp套接字进行深入研究的尝试,我尝试从本教程页面移植代码http://www.linuxhowtos.org/C_C++/socket.htm到winsock(如果重要的话,在win8上运行)。[下面的直接链接]代码目前可以编译和运行,但我从未收到数据包,两个程序只是等待并阻塞在recvfrom()上。我一直遇到同样的问题(例如,此代码的修改版本https://stackoverflow.com/a/679529/873217包括recvfrom()调用。并使用此代码C++problemwithDatagram(UDP)winsockettosendtoandrecvfromo