将无符号字符转换为字符串时,缓冲区的大小发生变化

奥古斯丁

我遇到无法解释的类型转换问题。

这是我想做的

我有一个动态分配的缓冲区,我需要将其转换为字符串,以便使用来自外部库的解析函数。

我的实施

unsigned char* msg_data;
msg_data = (unsigned char*)malloc(msg_data_length);
string msg_data_str = std::string(reinterpret_cast<const char*>(_msg_data));
SomeObject myObject;
myObject.ParseFromString(msg_data_str);

但问题是这样的:我的解析函数失败,因为它接收到错误的数据大小。假设我有一个size的缓冲区msg_data_length = 10,我的字符串的大小为my_data_str.size() = 14

我通过使用摆脱了我的问题,my_data_str.resize(my_data_length)但我想了解为什么大小my_data_str不是直接的msg_data_length

谢谢你的帮助 !

一些程序员哥们

我假设消息数据实际上没有像C样式的字符串那样以零结尾,这在std::string构造函数超出范围以查找终止符时会导致未定义的行为

要解决此问题,请使用带有两个参数(字符串和长度)的构造函数。

参见例如std::string构造函数参考

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于将无符号长整数转换为字符串的缓冲区大小

来自分类Dev

将固定大小的缓冲区(字节数组)转换为字符串

来自分类Dev

函数调用后字符串发生变化

来自分类Dev

在将图像编码/解码为base64字符串时,图像质量发生变化

来自分类Dev

引发异常时出现“ TypeError:强制转换为Unicode:需要字符串或缓冲区”

来自分类Dev

如何将字符串转换为二进制缓冲区?

来自分类Dev

将字节缓冲区转换为UTF8字符串

来自分类Dev

如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

来自分类Dev

JavaScript-将数组缓冲区转换为字符串

来自分类Dev

如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

来自分类Dev

将缓冲区从数据库转换为字符串

来自分类Dev

初始化时滑块的大小发生变化

来自分类Dev

很奇怪; 调用$ {this).width()时包含元素的大小发生变化

来自分类Dev

很奇怪; 调用$(this).width()时包含元素的大小发生变化

来自分类Dev

如何将十六进制字符缓冲区转换为ASCII字符串[C]

来自分类Dev

将字节的字符串转换为无符号的int

来自分类Dev

而将字符缓冲区转换为字符串是需要 strdup

来自分类Dev

如果数组大小发生变化,为什么C结构中的字符数组的偏移量会发生变化,并且此处定义的宏如何计算偏移量?

来自分类Dev

如何将节点缓冲区转换为类似console.log show的字符串

来自分类Dev

即使导致缓冲区溢出,将int转换为字符串仍然有效

来自分类Dev

如何将节点缓冲区转换为类似console.log show的字符串

来自分类Dev

如何将数据 URI 转换为缓冲区(带二进制的字符串)?

来自分类Dev

网页上的字符在刷新时发生变化

来自分类Dev

将排序的ordereddict转换为dict时,键值对位置发生变化

来自分类Dev

字符串的长度发生变化,并且保存长度的int不变

来自分类Dev

为什么调用strcpy()导致我的源字符串发生变化?

来自分类Dev

带定界符的字符串切片的长度发生变化

来自分类Dev

为什么我的字符串在此管道中发生变化?

来自分类Dev

函数结束后字符串的值发生变化

Related 相关文章

  1. 1

    用于将无符号长整数转换为字符串的缓冲区大小

  2. 2

    将固定大小的缓冲区(字节数组)转换为字符串

  3. 3

    函数调用后字符串发生变化

  4. 4

    在将图像编码/解码为base64字符串时,图像质量发生变化

  5. 5

    引发异常时出现“ TypeError:强制转换为Unicode:需要字符串或缓冲区”

  6. 6

    如何将字符串转换为二进制缓冲区?

  7. 7

    将字节缓冲区转换为UTF8字符串

  8. 8

    如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

  9. 9

    JavaScript-将数组缓冲区转换为字符串

  10. 10

    如何将tkFileDialog.asksaveasfilename()转换为缓冲区字符串?

  11. 11

    将缓冲区从数据库转换为字符串

  12. 12

    初始化时滑块的大小发生变化

  13. 13

    很奇怪; 调用$ {this).width()时包含元素的大小发生变化

  14. 14

    很奇怪; 调用$(this).width()时包含元素的大小发生变化

  15. 15

    如何将十六进制字符缓冲区转换为ASCII字符串[C]

  16. 16

    将字节的字符串转换为无符号的int

  17. 17

    而将字符缓冲区转换为字符串是需要 strdup

  18. 18

    如果数组大小发生变化,为什么C结构中的字符数组的偏移量会发生变化,并且此处定义的宏如何计算偏移量?

  19. 19

    如何将节点缓冲区转换为类似console.log show的字符串

  20. 20

    即使导致缓冲区溢出,将int转换为字符串仍然有效

  21. 21

    如何将节点缓冲区转换为类似console.log show的字符串

  22. 22

    如何将数据 URI 转换为缓冲区(带二进制的字符串)?

  23. 23

    网页上的字符在刷新时发生变化

  24. 24

    将排序的ordereddict转换为dict时,键值对位置发生变化

  25. 25

    字符串的长度发生变化,并且保存长度的int不变

  26. 26

    为什么调用strcpy()导致我的源字符串发生变化?

  27. 27

    带定界符的字符串切片的长度发生变化

  28. 28

    为什么我的字符串在此管道中发生变化?

  29. 29

    函数结束后字符串的值发生变化

热门标签

归档