162. 流的读写文件流是以外存文件为输入输出对象的数据流, 字符串流不是以外存文件为输入输出的对象, 而以内存中用户定义的字符数组( 字符串)为输入输出的对象, 即将数据输出到内存中的字符数组, 或者从字符数组( 字符串) 将数据读入。字符串流也称为内存流。字符串流也有相应的缓冲区, 开始时流缓冲区是空的。如果向字符数组存入数据, 随着向流插入数据, 流缓冲区中的数据不断增加, 待缓冲区满了( 或遇换行符), 一起存入字符数组。如果是从字符数组读数据, 先将字符数组中的数据送到流缓冲区, 然后从缓冲区中提取数据赋给有关变量。在字符数组中可以存放字符, 也可以存放整数、浮点数以及其他类型的数据。在向字符数组存入数据之前, 要先将数据从二进制形式转换为 ASCII 代码, 然后存放在缓冲区, 再从缓冲区送到字符数组。从字符数组读数据时, 先将字符数组中的数据送到缓冲区, 在赋给变量前要先将 ASCII 代码转换为二进制形式。总之, 流缓冲区中的数据格式与字符数组相同。文件流类有 ifstream,ofstream 和 fstream, 而字符串流类有 istrstream,ostrstream 和 strstream 。文件流类和字符串流类都是 ostream,istrea m和 iostrea m 类的派生类, 因此对它们的操作方法是基本相同的。向内存中的一个字符数组写数据就如同向文件写数据一样, 但有点不同: 1. 输出时数据不是流向外存文件, 而是流向内存中的一个存储空间。输入时从内存中的存储空间读取数据。 2. 字符串流对象关联的不是文件, 而是内存中的一个字符数组, 因此不需要打开和关闭文件。 3. 每个文件的最后都有一个文件结束符, 表示文件的结束。而字符串流所关联的字符数组中没有相应的结束标志, 用户要指定一个特殊字符作为结束符, 在向字符数组写入全部数据后要写入此字符。字符串流类没有 open 成员函数, 因此要在建立字符串流对象时通过给定参数来确立字符串流与字符数组的关联。即通过调用构造函数来解决此问题。建立字符串流对象的方法与含义如下: 一、建立输出字符串流对象 ostrstream 类提供的构造函数的原型为 ostrstream::ostrstream(char *buffer,int n,int mode=ios::out); buffer 是指向字符数组首元素的指针,n 为指定的流缓冲区的大小( 一般选与字符数组的大小相同, 也可以不同), 第个参数是可选的,默认为 ios::out 方式。可以用以下语句建立输出字符串流对象并与字符数组建立关联: ostrstream strout(ch1,20); 作用是建立输出字符串流对象 strout, 并使 strout 与字符数组 ch1 关联( 通过字符串流将数据输出到字符数组 ch1), 流缓冲区大小为。二、建立输入字符串流对象 istrstream 类提供了两个带参的构造函数, 原型为 istrstream::istrstream(char *buffer); istrstream::istrstream(char *buffer,int n); buffer 是指向字符数组首元素的指针, 用它来初始化流对象( 使流对象与字符数组建立关联) 。可以用以下语句建立输入字符串流对象
162.流的读写 来自淘豆网m.daumloan.com转载请标明出处.