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云服务器低至年59元

最近我们是不是在讨论较多的是关于K12教育的问题,培训机构由于资本的介入确实让家长更为焦虑,对于这样的整改我们还是很支持的。实际上,在云服务器市场中,我们也看到内卷和资本的力量,各大云服务商竞争也是相当激烈,更不用说个人和小公司服务商日子确实不好过。今天有看到UCloud发布的夏季促销活动,直接提前和双十一保价挂钩。这就是说,人家直接在暑假的时候就上线双十一的活动。早年的双十一活动会提前一周到十天...

安徽BGP云服务器 1核 1G 5M 29元/月 香港云服务器 1核 1G 19元首月 麻花云

麻花云怎么样?麻花云公司成立于2007年,当前主打产品为安徽移动BGP线路,数据中心连入移动骨干网。提供5M,10M大带宽云主机,香港云服务器产品,数据中心为香港将军澳机房,香港宽频机房 cn2-GIA优质线路、采用HYPER-V,KVM虚拟技术架构一、麻花云官网点击直达麻花云官方网站合肥网联网络科技有限公司优惠码: 专属优惠码:F1B07B 享受85折优惠。最新活动 :双11 云上嗨购 香港云主...

Krypt($120/年),2vCPU/2GB/60GB SSD/3TB

Krypt这两天发布了ION平台9月份优惠信息,提供一款特选套餐年付120美元(原价$162/年),开设在洛杉矶或者圣何塞机房,支持Windows或者Linux操作系统。ion.kryptcloud.com是Krypt机房上线的云主机平台,主要提供基于KVM架构云主机产品,相对于KT主站云服务器要便宜很多,产品可选洛杉矶、圣何塞或者新加坡等地机房。洛杉矶机房CPU:2 cores内存:2GB硬盘:...

内存不能为read为你推荐
虚拟主机服务虚拟主机和虚拟服务器有什么区别?中国互联网域名注册负责我国境内internet用户域名注册是什么机构广东虚拟主机西部数码和中国万网,哪家的虚拟主机哪个好,用过的说说?国外空间租用租用美国空间免费国外空间哪里的国外免费空间好?查询ip怎么查看IP地址成都虚拟空间空间服务商那个好什么是虚拟主机什么是“虚拟主机”?请解释祥细些!万网虚拟主机万网虚拟、专享、独享主机有什么区别?万网虚拟主机万网云虚拟主机怎么用,如何配置
com域名 3322动态域名注册 最便宜的vps GGC asp.net主机 狗爹 国外服务器 抢票工具 双十一秒杀 可外链网盘 空间技术网 卡巴斯基免费试用 t云 新世界服务器 广州虚拟主机 工信部网站备案查询 稳定空间 江苏徐州移动 97rb 密钥索引 更多