例:“写”字符数组
#include<iostream> #include <strstream> using namespace std; struct student { int num; char name[20]; float score; }; int main( ) { student stud[3]= {1001,"Li",78,1002,"Wang",89.5,1004,"Fun",90}; char c[50]; //用户定义的字符数组 ostrstream strout1(c,30); //建立输出字符串流,与数组c建立关联,缓冲区长30 for(int i=0; i<3; i++) //向字符数组c写3个学生的数据 strout1<<stud[i].num<<stud[i].name<<stud[i].score; strout1<<ends; //ends是C++的I/O操作符,插入一个′\\0′ cout<<"array c:"<<c<<endl; //显示字符数组c中的字符 ostrstream strout2(c,40); //这时,c将被重写 for(int i=0; i<3; i++) strout2<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<" "; strout2<<ends; //ends是C++的I/O操作符,插入一个′\\0′ cout<<"array c:"<<c<<endl; //显示字符数组c中的字符 return 0; }
以字符串流为中介交换数据
#include <strstream> #include<iostream> using namespace std; int main( ) { char c[50]="12 34 65 -23 -32 33 61 99 321 32"; int a[10],i,j,t; cout<<"array c:"<<c<<endl;//显示字符数组中的字符串 istrstream strin(c,sizeof(c)); //建立输入串流对象strin并与字符数组c关联 for(i=0; i<10; i++) strin>>a[i]; //从字符数组c读入10个整数赋给整型数组a cout<<"array a:"; for(i=0; i<10; i++) cout<<a[i]<<" "; //显示整型数组a各元素 cout<<endl; for(i=0; i<9; i++) //用起泡法对数组a排序 for(j=0; j<9-i; j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } ostrstream strout(c,sizeof(c)); //建立输出串流对象strout并与字符数组c关联 for(i=0; i<10; i++) strout<<a[i]<<" "; //将10个整数存放在字符数组c strout<<ends; //加入′\\0′ cout<<"array c:"<<c<<endl; //显示字符数组c return 0; }