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

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汤姆斯旺编程秘诀可编辑

个祥子: class TAnyClass { int x; int y; friend ostream operator (ostream ,TAnyClass ) ; friend ostream operator (istream ,TAnyClass ) ; friend bofstream operator (bofstream ,TAnyClass ) ; friend bifstream operator (bifstream ,TAnyClass ) ; public: TAnyClass(); x(0);y(0){} TAnyClass(int X,int Y);x(X),y(Y){} }; 因为运算符函数的参数不同, 所以编译器能依据其使用的场合在函数间作出区分。这个新的输出流运算符的实现如下所示: ostream operator( ostream os, TAnyClass c) { os”x==”c.xendl; os”y==”y.xendl; return os; } 下面实现了交互地为要输入的值结出提示的输入运算符(原文为输出运算符, 有误——译者注 ): Istream operator(istreamis, TAnyClass c) { cout”Enter vale for X:”; isc.x; cout”Enter vale for Y:”; isc.y; return is; } 现在你可以为来自cin 的TAnyClass 对象作提示,再将这些对象写到cout, 并用二进制文件流读、写磁盘文件中的对象。所有这些助作都可以用相对简单的流语句来完成。首先定义两个TAnyClass 对象: TAnyClass original, copy; 然后, 用下面这些语句给出提示、读入并确认对象original: Cout Enter X and Y values﹨n ; cin oribinal; // 提示并读值 coutYour values are: ﹨n ; cout original; // 显示进入对象的值 接下来, 力了用二进制形式把对象写到磁盘,首先要构造一个二进制输 出文件流。我将它称之为bofs: # define FILENAME “TBCLASS. DAT” bofstream bofs(FILENAME) ; if (! bofs) { cerr Error: unable to create FILENAME endl; exit ( 1 ) ; } bofs original; // 把类对象写到磁盘 bofs. Close() ; // 关闭文件,送数据到磁盟 倒数第二条语句把original 对象写到这个文件流,借助于类中的重载 运算符函数将它的数据存忙到磁盘上。最后一条语句关闭文件。这一步仅当你需要访问这个文件的数据而又处于作用域内时才有必要。为重读该对象, 在关闭输出文件之后拘造一个輸入文件流并象下面这祥读一个original 对象的拷贝: bifstream bifs (FILENAME) ; if (! bifs) { cerr “Error: unable to open “ FILENAME endl ; exit(2) ; } bifs copy; // 把类对象从磁盘读到copy中 最后一条语句读文件,并通过调用重载类运算符函数将对象的数据从磁盘装入到名字力copy 的TAnyClass 对象中, 用下列语句显示copy 的值: coutCopy of class object :\n ; cout copy; 6.3.7 在流中搜尋 对数据库工作而言, 程序需要反复挑栋文件中的一些特定记录。你可以 调用下面两个重载成员函数之一, 利用輸入文件流达到上述目的,这两个成 员函数都是从istream 类中继承的: istream seekg(streampos) ; istream seekg(streamoff , ios : : seek _ dir) 多 streampos 和 streamoff 的数据类型典型地定义成与long 值等价 : typedef long streampos; typedef long streamoff ; 不过, 另一个编译器有可能用一个不同的数据类型来定义streampos 和 streamoff , 所以不能把long 值直接传递给 seekg() 。 Seekg()的第一种重载格式把输入流定位到一个特定的字节, 第二种格式把输入流从三个由ios::seek_dir 定义的位置之一开始秘动一个偏移量(见表 6. 2)。 表 6.2ios::seek-dir常量 常量 值 插

文档评论(0)

jiaoyuguanliji + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档