zoukankan      html  css  js  c++  java
  • string中含有‘’的字符转成char* 后被截断的问题

    在做protobuf的一个项目中,碰到将对象序列化后成为string a="/010/002/020/000/023/"

    将 const char* b=a.c_str()后,传递。

    string c =b;

    c ="/010/002/020",后面的0以后的字符无法直接处理。

    解决方法:protobuf 通过  amqp_bytes_t传递

    开辟amqp_bytes_t的大小

    char kiki[30];//可以动态分配,目的是把string每个字符放到指定的内存空间内,用于memcpy拷贝。

    for(int i=0;i<a.length();i++)

    kiki[i]=a[i];

    把char 分配到amqp_bytes_t里面。

    amqp_bytes_t messagebody;

    messagebody = amqp_bytes_malloc(a.length());

    messagebody.len =a.length();

    memcpy(messagebody.bytes,&kiki[0],a.lenth());

    传递

    收到字符后:string默认也会截断含‘’字符,所以给string设定长度后,再拷贝;

    string msg;

      msg.resize(envelope.message.body.len);

    for(int i=0;i<envelope.message.body.len;i++)

    {

    msg[i]=*(char*)messagebody.bytes;

    messagebody.bytes++;

    }

    这个问题的产生主要和c++中的char 转string的时候,遇到‘’后默认会截断有关系,处理它的思路就是开足够的空间。

  • 相关阅读:
    python while 格式化 运算符 编码
    python 变量 if
    1、cad安装
    10、云存储—文件上传
    9、云函数
    8、云数据库
    8、小程序云开发
    7、页面交互js
    6、页面样式WXSS
    5、页面结构WXML
  • 原文地址:https://www.cnblogs.com/kikizhong/p/7727034.html
Copyright © 2011-2022 走看看