http://math.ecnu.edu.cn/~jypan

内存不能为read  时间:2021-01-16  阅读:()
第十五讲文件流与输出输入重载http://math.
ecnu.
edu.
cn/~jypan2输入输出流文件流类与文件流对象文件流对象与文件关联文件读写:文本文件与二进制文件重载输出输入操作运算符>在C++中,所有的输入输出都通过"流"来描述.
输入流:数据流向程序(input)输出流:数据从程序中流出(output)具体实现方法:流类和流对象http://math.
ecnu.
edu.
cn/~jypan类名作用头文件ios抽象父类iostreamistreamostreamiostream通用输入流和其他输入流的父类通用输出流和其他输出流的父类通用输入输出流和其他输入输出流的父类iostreamC++I/O库中定义的流类3ifstreamofstreamfstream输入文件流类输出文件流类输入输出文件流类fstreamiosistreamostreamifstreamofstreamiostreamfstreamhttp://math.
ecnu.
edu.
cn/~jypan文件流头文件:fstream该头文件中定义了三个文件流类ofstream向文件写入数据ifstream从文件读取数据fstream既读又写文件流类4#includehttp://math.
ecnu.
edu.
cn/~jypan这里的类fstream也可以是ifstream或ofstream如果用ifstream,则对象所关联的文件只能读如果用ofstream,则对象所关联的文件只能写创建文件流对象5fstreamfstrm;//创建一个文件流对象,未绑定到任何文件fstreamfstrm(fname);//创建一个文件流,并绑定到文件fnamefstreamfstrm(fname,mode);//创建文件流的同时指定文件的打开模式http://math.
ecnu.
edu.
cn/~jypan文件流对象基本操作(成员函数)将文件流对象关联到其它文件时,须先关闭已绑定的文件文件流对象被释放时,close会被自动调用文件流成员函数6fstrm.
open(fname)//将文件流对象fstrm绑定到文件fnamefstrm.
close()//关闭与文件流对象fstrm绑定的文件fstrm.
is_open()//测试文件是否已顺利打开(且未关闭)http://math.
ecnu.
edu.
cn/~jypan输入输出方式是在ios类中定义的以上方式可以组合使用,用"|"隔开,如ios::out|ios::binaryios::app通常与ios::out组合使用文件打开模式7ios::in//只读ios::out//只写,若文件存在,则内容被清除ios::app//追加,即每次写操作均定位到文件末尾ios::ate//打开文件后立即定位到文件末尾ios::Trunc//若文件存在,则清除文件中原有的内容ios::binary//以二进制方式进行读写http://math.
ecnu.
edu.
cn/~jypan在缺省情形下,文件以文本方式打开ifstream对象只能设定in模式,缺省为inofstream对象只能设定out模式,缺省为outfstream对象可以设定in或/和out模式文件打开模式(续)8ifstreamifstrm;ofstreamofstrm;fstreamfstrm;ifstrm.
open("fname1");//以缺省方式打开ofstrm.
open("fname2",ios::out);fstrm.
open("fname3",ios::out|ios::app);Example建议使用fstream对象进行文件读写操作.
http://math.
ecnu.
edu.
cn/~jypan文本文件的写:>或getline文本文件操作9fstreamfstrm("fname.
txt",ios::out);fstrm>str1;//缺省以空格为输入结束符fstrm.
getline(str2,12);fstrm.
close();我们是如何使用cin和cout的,就可以同样来使用文件流对象http://math.
ecnu.
edu.
cn/~jypan对二进制文件使用>或getline是没有意义的.
此时需要使用父类ostream的成员函数write和父类istream的成员函数read.
write和read的函数原型10二进制文件操作字符指针buf指向内存中一段存储空间,n是读写的字节数.
write(constchar*buf,intn);read(char*buf,intn);http://math.
ecnu.
edu.
cn/~jypan11二进制文件操作(续)write函数将字符指针buf所指定的地址开始的50个字节的内容不加转换地写到输出文件流对象中.
read函数从输入文件流对象所关联的文件中,读入30个字节(或遇EOF结束),存放在字符指针buf所指的内存空间内.
输出文件流对象.
write(buf,50);输入文件流对象.
read(buf,30);http://math.
ecnu.
edu.
cn/~jypan例:二进制文件操作12constintn=5;intA[n]={1,2,3,4,5};fstreamfstrm("fout.
dat",ios::out|ios::binary);//文件流对象可以直接初始化fstrm.
write((char*)A,sizeof(A));//需要强制类型转换fstrm.
close();intB[n];fstrm.
open("fout.
dat",ios::in|ios::binary);fstrm.
read((char*)B,sizeof(B));fstrm.
close();ex15_fstream02.
cpphttp://math.
ecnu.
edu.
cn/~jypan13重载>IO标准库分别使用>执行输出和输入操作,为了使得它们也适用于新定义的类,即也能用>进行相应对象的输出和输入,需要对这两个运算符进行重载.
http://math.
ecnu.
edu.
cn/~jypan重载>14我们通过具体例子来说明classRational{public:Rational(){x=0;y=1;}Rational(intx,inty){this->x=x;this->y=y;}friendostream&operator>(istream&,Rational&);private:intx,y;};注:>不能作为成员函数重载!
只能作为非成员函数!
ex15_overload11.
cpphttp://math.
ecnu.
edu.
cn/~jypan几点说明15通常情况下,第一个形参是ostream对象的引用(非常量)(非常量:需要修改;引用:无法直接复制一个ostream对象)第二个形参是对象的常引用(需要输出的对象)为了能在单个表达式中多次使用,需按左值方式返回,即返回一个引用friendostream&operator>

UCloud云服务器香港临时补货,(Intel)CN2 GIA优化线路,上车绝佳时机

至今为止介绍了很多UCLOUD云服务器的促销活动,UCLOUD业者以前看不到我们的个人用户,即使有促销活动,续费也很少。现在新用户的折扣力很大,包括旧用户在内也有一部分折扣。结果,我们的用户是他们的生存动力。没有共享他们的信息的理由是比较受欢迎的香港云服务器CN2GIA线路产品缺货。这不是刚才看到邮件注意和刘先生的通知,而是补充UCLOUD香港云服务器、INTELCPU配置的服务器。如果我们需要他...

建站选择网站域名和IP主机地址之间关系和注意要点

今天中午的时候有网友联系到在选择网站域名建站和主机的时候问到域名和IP地址有没有关联,或者需要注意的问题。毕竟我们在需要建站的时候,我们需要选择网站域名和主机,而主机有虚拟主机,包括共享和独立IP,同时还有云服务器、独立服务器、站群服务器等形式。通过这篇文章,简单的梳理关于网站域名和IP之间的关系。第一、什么是域名所谓网站域名,就是我们看到的类似"www.laozuo.org",我们可以通过直接记...

香港服务器多少钱一个月?香港云服务器最便宜价格

香港服务器多少钱一个月?香港服务器租用配置价格一个月多少,现在很多中小型企业在建站时都会租用香港服务器,租用香港服务器可以使网站访问更流畅、稳定性更好,安全性会更高等等。香港服务器的租用和其他地区的服务器租用配置元素都是一样的,那么为什么香港服务器那么受欢迎呢,香港云服务器最便宜价格多少钱一个月呢?阿里云轻量应用服务器最便宜的是1核1G峰值带宽30Mbps,24元/月,288元/年。不过我们一般选...

内存不能为read为你推荐
网站空间价格普通的网站空间要多少钱一年1g虚拟主机打算买个1G的虚拟主机,用来做什么好?虚拟主机服务商请问哪个服务商的虚拟主机比较好呀台湾虚拟主机问 美国、香港、台湾虚拟主机哪个好中文域名什么是中文域名?org域名.com、.cn和.org的域名有什么区别?域名大全有哪些网址之家域名大全到目前为止有多少个网址?哪几个最有知名度域名大全网址大全的网页有些啥?告几个算几个,拜托啦好心人。域名注册中心申请域名该去哪?
中国万网域名注册 美国加州vps 域名解析服务器 中国万网域名 外贸主机 webhostingpad 2014年感恩节 老左博客 网通ip 个人域名 免费mysql 域名转接 秒杀汇 搜索引擎提交入口 33456 vip域名 吉林铁通 联通网站 空间登录首页 韩国代理ip 更多