正在加载图片...
注意:不能将文件指针移到文件开始之前,也不能将文件指针移到文件结束标志之后 Istream类使用teO和 seeker所管理的文件指针称为读指针 ostream类也定义三个成员函数用来管理写指针,它们的原型是: ostream& ostream: seekp(streampos); //character p stand for put ostream& ostream: seekp(streamoff, seek dir) ostream& ostream:tloO,返回当前文件指针的位置 这三个成员函数的含义和对应的 Istream类中的成员函数的含义类似 例83:文件的随机访问EX81.CPP 注意:1、当进行文件随机访问时,文件的打开方式最好指定为二进制方式,以防止将 值为0X0A的字符转换成0XOD和0X0A两个字符,影响程序对文件的正确定位。 2、对于键盘、显示终端以及磁带这样的设备是不能进行随机访问的。 8.1.3将输出流系到输入流上 仍可以使用ios类中定义的成员函数tie将一个输出流系到一个输入流上,例如: fstream in( infile” ofstream out("outfile") in tie( &out) 在以后从输入流i提取数据之前,系统首先自动刷新输出流out的缓冲区。程序员也 可以使用 ostream类中定义的成员函数 flush来刷新一个流的缓冲区,如: out. flush(;或使 用操纵算子fush,如:out<<nush 8.1.4指向流的指针 下面这个程序是EX81.CPP的修订版,它在用户只在命令行给出一个参数的情况下, 将这个命令行参数所指定的文件的内容拷贝到屏幕上。 例84:EX84.CPP。 由于在ios类中将赋值和初始化语句说明为私有的,这就使得两个流对象之间不能进行 赋值和初始化操作,因而流对象不能用作函数的参数或返回值。但可将一个流对象的指针或 引用作为函数的参数或返回类型是可以的,而且也应该这样使用 从 Istream类、 ostream类和 Iostream类中公有派生了三个类: class istream withassign public istream class ostream withassign: public ostream class iostream withassign: public iostream 在这三个派生的类中分别定义了赋值操作 istream withassign& istream withassign: operator=(istream&) ostream withassign& ostream withassign: operator=(ostream&) iostream withassign& iostream withassign: operator=(iostream&); cin被定义为 istream withassign类的对象, cout\cerr和clog都是 ostrem withassign类的 对象,所以这四个预定义的流可以用于赋值操作注意:不能将文件指针移到文件开始之前,也不能将文件指针移到文件结束标志之后。 Istream 类使用 tellg()和 seekg()所管理的文件指针称为读指针。 ostream 类也定义三个成员函数用来管理写指针,它们的原型是: ostream& ostream::seekp(streampos);//character p stand for put ostream& ostream::seekp(streamoff,seek_dir); ostream& ostream::tellp();//返回当前文件指针的位置。 这三个成员函数的含义和对应的 istream 类中的成员函数的含义类似。 例 8_3:文件的随机访问 EX8_1.CPP。 注意:1、当进行文件随机访问时,文件的打开方式最好指定为二进制方式,以防止将 值为 0X0A 的字符转换成 0X0D 和 0X0A 两个字符,影响程序对文件的正确定位。 2、对于键盘、显示终端以及磁带这样的设备是不能进行随机访问的。 8.1.3 将输出流系到输入流上 仍可以使用 ios 类中定义的成员函数 tie 将一个输出流系到一个输入流上,例如: ifstream in(“infile”); ofstream out(“outfile”); in.tie(&out); 在以后从输入流 in 提取数据之前,系统首先自动刷新输出流 out 的缓冲区。程序员也 可以使用 ostream 类中定义的成员函数 flush()来刷新一个流的缓冲区,如:out.flush();或使 用操纵算子 flush,如:out<<flush; 8.1.4 指向流的指针 下面这个程序是 EX8_1.CPP 的修订版,它在用户只在命令行给出一个参数的情况下, 将这个命令行参数所指定的文件的内容拷贝到屏幕上。 例 8_4:EX8_4.CPP。 由于在 ios 类中将赋值和初始化语句说明为私有的,这就使得两个流对象之间不能进行 赋值和初始化操作,因而流对象不能用作函数的参数或返回值。但可将一个流对象的指针或 引用作为函数的参数或返回类型是可以的,而且也应该这样使用。 从 istream 类、ostream 类和 iostream 类中公有派生了三个类: class istream_withassign:public istream class ostream_withassign:public ostream class iostream_withassign:public iostream 在这三个派生的类中分别定义了赋值操作 istream_withassign& istream_withassign::operator=(istream&); ostream_withassign& ostream_withassign: :operator=(ostream&); iostream_withassign& iostream_withassign: :operator=(iostream&); cin 被定义为 istream_withassign 类的对象,cout\cerr 和 clog 都是 ostrem_withassign 类的 对象,所以这四个预定义的流可以用于赋值操作
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有