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>

.asia域名是否适合做个人网站及.asia域名注册和续费成本

今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...

TabbyCloud周年庆&七夕节活动 美國INAP 香港CN2

TabbyCloud迎来一周岁的生日啦!在这一年里,感谢您包容我们的不足和缺点,在您的理解与建议下我们也在不断改变与成长。为庆祝TabbyCloud运营一周年和七夕节,TabbyCloud推出以下活动。TabbyCloud周年庆&七夕节活动官方网站:https://tabbycloud.com/香港CN2: https://tabbycloud.com/cart.php?gid=16购买链...

华纳云,3折低至优惠云服务器,独立服务器/高防御服务器低至6折,免备案香港云服务器CN2 GIA三网直连线路月付18元起,10Mbps带宽不限流量

近日华纳云发布了最新的618返场优惠活动,主要针对旗下的免备案香港云服务器、香港独立服务器、香港高防御服务器等产品,月付6折优惠起,高防御服务器可提供20G DDOS防御,采用E5处理器V4CPU性能,10Mbps独享CN2 GIA高速优质带宽,有需要免备案香港服务器、香港云服务器、香港独立服务器、香港高防御服务器、香港物理服务器的朋友可以尝试一下。华纳云好不好?华纳云怎么样?华纳云服务器怎么样?...

内存不能为read为你推荐
php虚拟主机如何选择PHP网站虚拟主机域名注册网有没有免费的网站域名注册?虚拟主机软件哪种虚拟机软件好用apache虚拟主机apache里面可以在虚拟主机里边设置虚拟目录吗?急,在线等!北京虚拟主机虚拟主机 那个好用又实惠虚拟主机mysql虚拟主机支持mysql数据库,还需要额外购买mysql吗?m3型虚拟主机建网站,M型虚拟主机和G型虚拟主机,选哪种好?备案域名购买购买已备案域名好使吗?万网域名万网的一个域名是怎么开通的?域名抢注域名怎么抢注?
二级域名 云南服务器租用 北京租服务器 工信部域名备案系统 免费动态域名 softlayer 百度云100as 云鼎网络 本网站服务器在美国 好看qq空间 云全民 有奖调查 世界测速 域名和空间 免费网页申请 安徽双线服务器 移动服务器托管 视频服务器是什么 服务器防火墙 lamp的音标 更多