字符串流的简单实例

Posted IT_xiao小巫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串流的简单实例相关的知识,希望对你有一定的参考价值。

/*在一个字符数组c中存放10个整数,以空格相间隔,
要求将它们放到整型数组,在按大小排序,然后存放回字符数组c中。
*/
#include<iostream>
#include<strstream>
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<<"arrat 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:"<<a<<endl;
	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;
		system("pause");
		return 0;



运行结果如下:

array c: 12 34 65 -23 -32 33 61 99 321 32(字符数组c原来的内容)

array a: 12 34 65 -23 -32 33 61 99 321 32    (整型数组a的内容)

array c: -32 –12 32 33 34 61 65 99 321    (字符数组c最后的内容)

可以看到:

(1) 用字符串流时不需要打开和关闭文件。

(2) 通过字符串流从字符数组读数据就如同从键盘读数据一样,可以从字符数组读入字符数据,也可以读入整数、浮点数或其他类型数据。

(3) 程序中先后建立了两个字符串流strin和strout,与字符数组c关联。strin从字符数组c中获取数据,strout将数据传送给字符数组。分别对同一字符数组进行操作。甚至可以对字符数组交叉进行读写。

(4) 用输出字符串流向字符数组c写数据时,是从数组的首地址开始的,因此更新了数组的内容。

(5) 字符串流关联的字符数组并不一定是专为字符串流而定义的数组,它与一般的字符数组无异,可以对该数组进行其他各种操作。

与字符串流关联的字符数组相当于内存中的临时仓库,可以用来存放各种类型的数据(以ASCII形式存放),在需要时再从中读回来。它的用法相当于标准设备(显示器与键盘),但标准设备不能保存数据,而字符数组中的内容可以随时用ASCII字符输出。它比外存文件使用方便,不必建立文件(不需打开与关闭),存取速度快。但它的生命周期与其所在的模块(如主函数)相同,该模块的生命周期结束后,字符数组也不存在了。因此只能作为临时存储空间。

以上是关于字符串流的简单实例的主要内容,如果未能解决你的问题,请参考以下文章

字符串类

字符串流有啥意义? [复制]

对和字符串流

如何使用 C++ 字符串流附加 int?

C++ 字符串流

字符串流