200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 字符拷贝时字符串结束符'\0'很重要

字符拷贝时字符串结束符'\0'很重要

时间:2021-04-17 18:45:23

相关推荐

字符拷贝时字符串结束符'\0'很重要

近期由于memcpy字符串的时候,没有将结束符拷贝进去,导致字符串结尾有乱码,如图:

std::ostringstream osg;osg.str("");osg << "<root>";string p = osg.str();int len = strlen(p.c_str());char * buffer = new char[len];memcpy(buffer, p.c_str(), len);

又来找到原因为,new内存的时候,内存长度应该包括字符串结束符'\0'的长度,而strlen(),计算的长度是有效长度,没有包括'\0',所以在memcpy的时候,

会导致结尾的乱码。正确的代码应该这样:

std::ostringstream osg;osg.str("");osg << "<root>";string p = osg.str();int len = strlen(p.c_str());char * buffer = new char[len+1];memcpy(buffer, p.c_str(), len+1);

这次在这里吃了苦头。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。