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

建立输出字符串流:

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型的数组,这样不是更方便么?但它的意义在于我们可以通过字符串流将整数、浮点数、以及其他类型的数据等存放到字符数组中,相当于是一个万能的容器吧~

C++字符串流保存数据的更多相关文章

  1. C++学习50 对字符串流的读写

    文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据 ...

  2. 字符串流sstream[part2/使用同一个字符串流反复读写数据]

    stringstream构造函数会特别消耗内存,似乎不打算主动释放内存(或许是为了提高效率),如果你要在程序中使用同一个流反复读写大量数据,将会造成大量的内部消耗,因此建议:    1:调用clear ...

  3. 使用C#处理基于比特流的数据

    使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...

  4. 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作

    一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...

  5. Android 中保存数据到文件中

    1.在安卓开发中,会遇到保存数据到手机中以及从手机中获取数据的情况 /** * 把数据存放到手机内存中 * * @param number * @param password * @return */ ...

  6. C/C++程序从文本文件中读取(保存)数据

    :本文仅供初学者参阅,解惑 在C程序中: 与程序代码外的数据(文件)打交道,我们使用到流(stream)这个概念,实现进程的虚拟内存与文件之间的数据交换. ——文件流:C标准库提供了FILE(之所以命 ...

  7. ca78a_c++_字符串流在内存中的输入输出(速度快)

    /*ca78a_c++_字符串流在内存中的输入输出**字符串流:在内存中的输入输出.(在内存中进行,速度快)**文件流 :是对文件进行输入和输出.(在磁盘里面进行)istringstream(输入), ...

  8. Android 学习笔记之如何使用SQLite数据库来保存数据...

    PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite:   ...

  9. IOS四种保存数据的方式

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...

随机推荐

  1. MYSQL 索引创建与使用

    可能用到索引的地方: where 子句,order by,group by 不需要创建索引的情况: 1. 表比较小 2.赋值有限的列(枚举),不要创建索引.创建的索引返回的行越少越好,此时区分度大. ...

  2. 03-THREE.JS GUI使用

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  3. 【Oracle】实现Oracle数据库对象的一键升级

    引言     公司内部的项目比较倾向于将业务逻辑放在oracle存储过程中实现,所以每次项目升级都涉及到很多的oracle表,存储过程等数据库对象的升级.然而采取的升级方式是比较"原始&qu ...

  4. Atom设置震撼的编辑效果

    在代码编辑器.文本编辑器领域,有着不少的「神器」级的产品,如历史悠久的 VIM.Emacs 以及如今当红的SublimeText.另外还有 EditPlus.NotePad++.UltraEdit 等 ...

  5. mysql 完整约束

    一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...

  6. Hadoop单机模式和伪分布式搭建教程CentOS

    1. 安装JAVA环境 2. Hadoop下载地址: http://archive.apache.org/dist/hadoop/core/ tar -zxvf hadoop-2.6.0.tar.gz ...

  7. HihoCoder1080 更为复杂的买卖房屋姿势(线段树+多重lazy)

    描述 小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产. 在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政 ...

  8. [Luogu3674]小清新人渣的本愿

    luogu 题意 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ...

  9. vue项目错误集

    1.报错:vue.esm.js?efeb:591 [Vue warn]: Avoid using non-primitive value as key, use string/number value ...

  10. 如何测试远端TCP和UDP端口是否开放

    项目遇到问题时首先排查网络是否正常是一个重要的方面.遇到很多次,同事找我解决问题,最后发现却是IP或端口不通的问题.然而就是这么个简单的问题,对方却花费了甚至一天的时间排查原因. 现在大部分项目都是用 ...