string怎么也会溢出

lae6965921lae 2014-05-18 10:53:54
    string sFileName="111.jpg";
std::vector<char> *buffer = response->getResponseData();
char* buf = (char*)malloc(buffer->size());
std::copy(buffer->begin(), buffer->end(), buf);
string aaaa=buf;
CCLOG("string收到图片字节%d",strlen(aaaa.c_str()));
CCLOG("char收到图片字节%d",buffer->size());
FILE *fp = fopen(sFileName.c_str(),"wb+");
fwrite(buf,1,buffer->size(),fp);
fclose(fp);


为什么 string aaaa=buf; but转化成aaa
CCLOG("string收到图片字节%d",strlen(aaaa.c_str()));
string收到图片数据4
收到只有4字节了。。

CCLOG("char收到图片字节%d",buffer->size());
原来有char收到图片字节57820 那么多啊

string不是无限增长的么。。内存 怎么会溢出?
...全文
305 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrankHB1989 2014-05-18
  • 打赏
  • 举报
回复
引用 7 楼 lae6965921lae 的回复:
[quote=引用 5 楼 lae6965921lae 的回复:] [quote=引用 4 楼 FrankHB1989 的回复:] [quote=引用 1 楼 taodm 的回复:] 楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。
你这里反而有另一个误区。 大概由于当初设计时关于“字符串”概念以及和容器相似性的两难选择,结果现在的std::basic_string并不表示放的一定就是null-terminated string。因此有size()/length()和char_traits::length()语义不同的破事。(其实我倒是觉得length可以一致,size含义另说。) 而LZ的问题是对strlen的理解错误:c_str然后再strlen就是和char_traits::length一样,取第一个不等于char()的元素之前的长度。string的使用本身倒没这个问题——只是一般为了避免坑还是vector了(主要是不跟stringstream之类的一起用没什么必要用string)。 [/quote] 呵呵 看了那么多 虽然不是很明白 但是strlen不能这样用 哈哈 其实我想转化成string 里面加个字符。。 然后存入图片。。。[/quote]算了 二进制处理我还是不用string了 各种问题[/quote] 要说有问题的话就是你在不适合c_str的地方误用了。 的确不用string安定。
lae6965921lae 2014-05-18
  • 打赏
  • 举报
回复
引用 5 楼 lae6965921lae 的回复:
[quote=引用 4 楼 FrankHB1989 的回复:] [quote=引用 1 楼 taodm 的回复:] 楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。
你这里反而有另一个误区。 大概由于当初设计时关于“字符串”概念以及和容器相似性的两难选择,结果现在的std::basic_string并不表示放的一定就是null-terminated string。因此有size()/length()和char_traits::length()语义不同的破事。(其实我倒是觉得length可以一致,size含义另说。) 而LZ的问题是对strlen的理解错误:c_str然后再strlen就是和char_traits::length一样,取第一个不等于char()的元素之前的长度。string的使用本身倒没这个问题——只是一般为了避免坑还是vector了(主要是不跟stringstream之类的一起用没什么必要用string)。 [/quote] 呵呵 看了那么多 虽然不是很明白 但是strlen不能这样用 哈哈 其实我想转化成string 里面加个字符。。 然后存入图片。。。[/quote]算了 二进制处理我还是不用string了 各种问题
lae6965921lae 2014-05-18
  • 打赏
  • 举报
回复
引用 5 楼 lae6965921lae 的回复:
[quote=引用 4 楼 FrankHB1989 的回复:] [quote=引用 1 楼 taodm 的回复:] 楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。
你这里反而有另一个误区。 大概由于当初设计时关于“字符串”概念以及和容器相似性的两难选择,结果现在的std::basic_string并不表示放的一定就是null-terminated string。因此有size()/length()和char_traits::length()语义不同的破事。(其实我倒是觉得length可以一致,size含义另说。) 而LZ的问题是对strlen的理解错误:c_str然后再strlen就是和char_traits::length一样,取第一个不等于char()的元素之前的长度。string的使用本身倒没这个问题——只是一般为了避免坑还是vector了(主要是不跟stringstream之类的一起用没什么必要用string)。 [/quote] 呵呵 看了那么多 虽然不是很明白 但是strlen不能这样用 哈哈 其实我想转化成string 里面加个字符。。 然后存入图片。。。[/quote] 本身string有问题吧?我存入图片 就是4kb。。 我不知道怎么存。。string aaaa 的存入图片
lae6965921lae 2014-05-18
  • 打赏
  • 举报
回复
引用 4 楼 FrankHB1989 的回复:
[quote=引用 1 楼 taodm 的回复:] 楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。
你这里反而有另一个误区。 大概由于当初设计时关于“字符串”概念以及和容器相似性的两难选择,结果现在的std::basic_string并不表示放的一定就是null-terminated string。因此有size()/length()和char_traits::length()语义不同的破事。(其实我倒是觉得length可以一致,size含义另说。) 而LZ的问题是对strlen的理解错误:c_str然后再strlen就是和char_traits::length一样,取第一个不等于char()的元素之前的长度。string的使用本身倒没这个问题——只是一般为了避免坑还是vector了(主要是不跟stringstream之类的一起用没什么必要用string)。 [/quote] 呵呵 看了那么多 虽然不是很明白 但是strlen不能这样用 哈哈 其实我想转化成string 里面加个字符。。 然后存入图片。。。
FrankHB1989 2014-05-18
  • 打赏
  • 举报
回复
引用 1 楼 taodm 的回复:
楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。
你这里反而有另一个误区。 大概由于当初设计时关于“字符串”概念以及和容器相似性的两难选择,结果现在的std::basic_string并不表示放的一定就是null-terminated string。因此有size()/length()和char_traits::length()语义不同的破事。(其实我倒是觉得length可以一致,size含义另说。) 而LZ的问题是对strlen的理解错误:c_str然后再strlen就是和char_traits::length一样,取第一个不等于char()的元素之前的长度。string的使用本身倒没这个问题——只是一般为了避免坑还是vector了(主要是不跟stringstream之类的一起用没什么必要用string)。
taodm 2014-05-18
  • 打赏
  • 举报
回复
好吧,那就只能说楼主V5了。
lae6965921lae 2014-05-18
  • 打赏
  • 举报
回复
引用 1 楼 taodm 的回复:
楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。
是二进制啊 二进制不是字符串么?
taodm 2014-05-18
  • 打赏
  • 举报
回复
楼主到底看过书没有,知道string是干嘛用的么。 你那个jpg是字符串么。

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧