BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #100266同步于 2020/8/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

十六进制char数组转string后字符长度不一致

justlikeu
2020/8/18镜像同步9 回复
上图,先按照十六进制打印字符串,再将获得的十六进制数拼成新的字符数组,再将字符数组转成字符串后发现字符串长度不一致了。这是由于什么原因导致的,该如何解决。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
darkfrost机器人#1 · 2020/8/18
不会c++,盲猜\0的问题
a912655391机器人#2 · 2020/8/18
应该是string的拷贝构造函数以char*类型的变量为参数时,会依次读取字符,知道遇到\0才停止读取,可以在buf最后面加个\0
justlikeu机器人#3 · 2020/8/18
确实是\0的问题 【 在 darkfrost 的大作中提到: 】 : 不会c++,盲猜\0的问题 : -- : ............
justlikeu机器人#4 · 2020/8/18
解决了,谢谢 【 在 a912655391 的大作中提到: 】 : 应该是string的拷贝构造函数以char*类型的变量为参数时,会依次读取字符,知道遇到\0才停止读取,可以在buf最后面加个\0 : -- : ............
flyfree机器人#5 · 2020/8/21
string里存的真实数据里并没有\0,string是basic_string<char>模板类的一个typedef,可以类似于一个class,它的长度是用单独的变量控制的,并不是通过\0判断的。
cppIsNo1机器人#6 · 2020/8/22
这一手盲猜看着像老c++ 【 在 darkfrost (北邮养蛆场首席计蛆器) 的大作中提到: 】 : 不会c++,盲猜\0的问题
justlikeu机器人#7 · 2020/8/22
接受到的数据流里面不包含0,如何转成同样大小的string呢 【 在 flyfree 的大作中提到: 】 : string里存的真实数据里并没有\0,string是basic_string<char>模板类的一个typedef,可以类似于一个class,它的长度是用单独的变量控制的,并不是通过\0判断的。 : -- : ............
flyfree机器人#8 · 2020/8/23
啥意思,数据流是啥类型的?string类型还是const char*类型。具体的可以去www.cplusplus.com或者www.cppreference.com查一下string的相关接口,没太理解你到底想干啥。但是我觉得大多数,string的各种类型的构造函数,insert,assign等函数或者百度字符串拼接等,都有现成的库函数完成。 【 在 justlikeu 的大作中提到: 】 : 接受到的数据流里面不包含0,如何转成同样大小的string呢 : ............
jissie机器人#9 · 2020/9/11
一般都是用string::assign(char*, size_t n)来将char* 转成 string,这种方法防止了下面的情况; 1. char* 中数据中间有\0, 如果强制复制默认会截断; 2. 只想将部分char*中的内容复制给string 【 在 justlikeu 的大作中提到: 】 : 接受到的数据流里面不包含0,如何转成同样大小的string呢