zhumengyun 发表于 2014-9-10 15:37:02

关于字符串流对象的应用

#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时只会得到两个一元素。

musilintan 发表于 2014-9-10 16:23:26

字符串流神马的没用过。。。不过我提示你可以给char c,换成char c。然后在c = '\0'。
你尝试一下,看看是不是只输出2个字符。
我推断cout<<c输出时会去寻找\0来结束。
以上都是推测。。。因为我也不了解你的这些流神马的。只供参考。。。感觉有用就试一试,感觉没用的话就当我给你踩楼了。

elvo 发表于 2014-9-10 17:24:57

打酱油中。。。缓冲区溢出。。。

zhumengyun 发表于 2014-9-10 18:47:24

上面回答的我试过了,但是不对。还是不清除怎么回事。
页: [1]
查看完整版本: 关于字符串流对象的应用