请问程序哪里出错了
展开全部
你在char *buf = ss.str();设个断点,你就明白了。
1. ss << "Hi, welcome to !"; 后,ss内部没有“\0”结尾。
2. ss.str(); 时,它内部会调用freeze函数,然后你再使用ss<<"\0";时,并没有像你预期的那样,写成功了。向一个freeze的strstream写数据会导致它坏掉。
所以buf并没有null结尾,后面的东东是随机的,未初始化的内存内容。
正确的做法:
ostrstream ss;
int n;
ss << "Hi, welcome to !";
n = ss.pcount();
char *buf = new char[n+1];
memset(buf, 0, n+1);
memcpy(buf, ss.str(), n);
cout <<"n="<<n<<endl;
cout<<buf<<endl;
delete[] buf;
return 0;
追问
请问ss.pcount()是什么意思
追答
取得strstream 里字符sequence的长度,有点像string的长度,但没有NULL结尾。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询