C++字符串流保存数据

文件流是以外存文件为输入输出对象的数据流。字符串流是以内存中用户定义的字符数组(字符串)为输入输出对象的。

建立输出字符串流:

ostrstream strout(c,sizeof(c));第一个参数是字符数组首元素的指针,第二个参数为指定的流缓冲区的大小(一般选与字符数组c的大小相同)

建立输入字符串流:

istrstream strin(c,sizeof(c));第一个参数是字符数组首元素的指针,第二个参数为指定的流缓冲区的大小(一般选与字符数组c的大小相同)

下面看一个例子:

在一个字符数组c中存放了10个整数,以空格相间隔,要求将它们放到整形数组中,在按大小排序,然后再存放回字符数组c中。

#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,temp;
	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<<endl;
	//冒泡排序
	for(i=0;i<9;i++)
	{
		for(j=9;j>i;j--)
		{
			if(a[j]<a[j-1])
			{
				temp=a[j];
				a[j]=a[j-1];
				a[j-1]=temp;
			}
		}	
	} 
	ostrstream strout(c,sizeof(c));//建立输出串流对象strout并与字符数组c关联
	for(i=0;i<10;i++)
	{
		strout<<a[i]<<" ";
	} 
	cout<<endl;
	cout<<"array c: "<<c<<endl;
	return 0; 
} 

输出结果:

/*
	array c: 12 34 65 -23 -32 33 61 99 321 32
	
	
	array c: -32 -23 12 32 33 34 61 65 99 321
*/

说明:字符数组中的空格是为了在strin读取字符串的时候,分割数字用的。

看了上面的例子,有人或许就想了(其实我一开始就这样认为=。=),我为啥要费这个劲,不直接定义一个int型的数组,这样不是更方便么?但它的意义在于我们可以通过字符串流将整数、浮点数、以及其他类型的数据等存放到字符数组中,相当于是一个万能的容器吧~



posted @ 2013-12-13 22:27  千手宇智波  阅读(2267)  评论(0编辑  收藏  举报