相关疑难解决方法(0)

std :: string是否可以包含嵌入的空值?

对于常规C字符串,空字符'\0'表示数据的结尾.

那么std::string,我可以使用嵌入空字符的字符串吗?

c++ c-strings stdstring null-terminated

37
推荐指数
2
解决办法
2万
查看次数

Google Protocol Buffers - 对编码解码base64 char*c字符串协议缓冲区数据感到困惑

我正在使用Google Protocol Buffers将消息发送到服务器.我的困惑在于如何发送图像与我如何接收图像.请参阅下面的代码了解详情,但我的问题是:

我是否需要对从未进行过base64编码的返回字符串进行base64_decode,因为它是使用char*和size发送的?也许Google Protocol Buffers处理这个问题,但我在生成的类中找不到任何证据.

我可能在这里找到了答案,但我想确定.


这是发送数据的代码.显然,我发送一个unsigned char*和一个const long unsigned int来设置图像.

std::string message::myMessaging::generateMessage(unsigned char *imageData, const long unsigned int elemSize, long unsigned int *msgSize)
{
    ImageMessage message;
    message.set_ismaster(true);
    message.set_personname("Lucy");
    message.set_image(imageData, elemSize);

    string out;
    message.SerializeToString(&out);
    int size = message.ByteSize();
    memcpy(msgSize, &size, sizeof(int));
    return out;
}
Run Code Online (Sandbox Code Playgroud)

这是接收数据的代码.从服务器返回,我收到messageData作为const字符串.我创建了我的Google协议缓冲区消息并对其进行解析以从中获取信息.在这里,我的图像是一个字符串.

std::string message::myMessaging::parseMessage(const string messageData, long unsigned int *msgSize)
{
    ImageMessage message;
    message.Clear();
    message.ParseFromString(messageData);

    string personname = message.personname();
    string image = message.image();

    // do I need to decode it ?
    std::string …
Run Code Online (Sandbox Code Playgroud)

c c++ string byte protocol-buffers

2
推荐指数
1
解决办法
2687
查看次数