- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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常量
常量 值 插
您可能关注的文档
- 武汉地源泵应用现状及发展对策.doc
- 武汉地区想手机策划书.doc
- 武汉市房产开发流程.doc
- 武汉市房产经纪机构基础资料申报表.doc
- 武汉市深医药卫生体制改革实施方案.doc
- 武汉城建案归档内容及顺序.doc
- 武汉网站设方案.doc
- 步科触摸快速入门教程.doc
- 歪门邪道创意.doc
- 残疾人社保障体系研究 - 副本.doc
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)