关于字符串流对象的应用
#include<strstream>#include<iostream>
using namespace std;
struct student
{
int num;
char name;
float score;
};
int main()
{ int i=0;
student stud={1001,"li",78,1002,"wang",89.5,1004,"fun",90};
char c; //定义的数组长度很小
ostrstream strout(c,sizeof(stud)); //缓冲区的长度大于数组c的长度
for(i=0;i<3;i++)
strout<<stud.num <<stud.name <<stud.score ;
strout<<ends;
cout<<"arry c:"<<c<<endl;
return 0;
}
缓冲区的大小大于数组C的长度,为什么结果仍然可以得到arry c:1001,"li",78,1002,"wang",89.5,1004,"fun",90。我本来以为数组c的大小为2,那么cout<<c时只会得到两个一元素。
字符串流神马的没用过。。。不过我提示你可以给char c,换成char c。然后在c = '\0'。
你尝试一下,看看是不是只输出2个字符。
我推断cout<<c输出时会去寻找\0来结束。
以上都是推测。。。因为我也不了解你的这些流神马的。只供参考。。。感觉有用就试一试,感觉没用的话就当我给你踩楼了。 打酱油中。。。缓冲区溢出。。。 上面回答的我试过了,但是不对。还是不清除怎么回事。
页:
[1]