汤姆斯旺C++编程秘诀可编辑.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:18 大小:158KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

汤姆斯旺C++编程秘诀可编辑.doc

汤姆斯旺C++编程秘诀可编辑.doc

预览

免费试读已结束,剩余 8 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

个祥子:classTAnyClass{intx;inty;friendostream&operator<<(ostream&,TAnyClass&);friendostream&operator>>(istream&,TAnyClass&);friendbofstream&operator<<(bofstream&,TAnyClass&);friendbifstream&operator>>(bifstream&,TAnyClass&);public:TAnyClass();x(0);y(0){}TAnyClass(intX,intY);x(X),y(Y){}};因为运算符函数的参数不同,所以编译器能依据其使用的场合在函数间作出区分。这个新的输出流运算符的实现如下所示:ostream&operator<<(ostream&os,TAnyClass&c){os<<”x==”<<c.x<<endl;os<<”y==”<<y.x<<endl;returnos;}下面实现了交互地为要输入的值结出提示的输入运算符(原文为输出运算符,有误——译者注):Istream&operator>>(istream&is,TAnyClass&c){cout<<”EntervaleforX:”;is>>c.x;cout<<”EntervaleforY:”;is>>c.y;returnis;}现在你可以为来自cin的TAnyClass对象作提示,再将这些对象写到cout,并用二进制文件流读、写磁盘文件中的对象。所有这些助作都可以用相对简单的流语句来完成。首先定义两个TAnyClass对象:TAnyClassoriginal,copy;然后,用下面这些语句给出提示、读入并确认对象original:Cout<<"EnterXandYvalues﹨n";cin>>oribinal;//提示并读值cout<<"Yourvaluesare:﹨n";cout<<original;//显示进入对象的值接下来,力了用二进制形式把对象写到磁盘,首先要构造一个二进制输出文件流。我将它称之为bofs:#defineFILENAME“TBCLASS.DAT”bofstreambofs(FILENAME);if(!bofs){cerr<<"Error:unabletocreate"<<FILENAME<<endl;exit(1);}bofs<<original;//把类对象写到磁盘bofs.Close();//关闭文件,送数据到磁盟倒数第二条语句把original对象写到这个文件流,借助于类中的重载<<运算符函数将它的数据存忙到磁盘上。最后一条语句关闭文件。这一步仅当你需要访问这个文件的数据而又处于作用域内时才有必要。为重读该对象,在关闭输出文件之后拘造一个輸入文件流并象下面这祥读一个original对象的拷贝:bifstreambifs(FILENAME);if(!bifs){cerr<<“Error:unabletoopen“<<FILENAME<<endl;exit(2);}bifs>>copy;//把类对象从磁盘读到copy中最后一条语句读文件,并通过调用重载类>>运算符函数将对象的数据从磁盘装入到名字力copy的TAnyClass对象中,用下列语句显示copy的值:cout<<"Copyofclassobject:\n";cout<<copy;6.3.7在流中搜尋对数据库工作而言,程序需要反复挑栋文件中的一些特定记录。你可以调用下面两个重载成员函数之一,利用輸入文件流达到上述目的,这两个成员函数都是从istream类中继承的:istream&seekg(streampos);istream&seekg(streamoff,ios::seek_dir)多streampos和streamoff的数据类型典型地定义成与long值等价:typedeflongstreampos;typedeflongstreamoff;不过,另一个编译器有可能用一个不同的数据类型来定义streampos和streamoff,所以不能把long值直接传递给seekg()。Seekg()的第一种重载格式把输入流定位到一个特定的字节,第二种格式把输入流从三个由ios::seek_dir定义的位置之一开始秘动一个偏移量(见表6.2)。表6.2ios::seek-dir常量常量值插述beg0从文件买开始搜寻cur1从文件的当前位置开始搜寻end2从文件尾开始搜索对于ios::beg是提供正的偏移量。对于ios::cur提供正的偏移量是为了向文件尾作正向搜寻,否则使用负的偏移