c++文件

总结一下文件,顺便复习
文件两大类:文本文件(字符)和二进制文件(保留数据类型)
一、文本文件
打开方式:
只读:file.open(“文件名.格式”,ios::in)
只写:file.open(“文件名.格式”,ios::out)
//这两种每次打开均会刷新文件
可读可写:file.open(“文件名.格式”,ios::in|ios::out)
追加:file.open(“文件名.格式”,ios::app)//这两种不会刷新文件内容
//上述四种如果文件不存在,会创建一个新文件。
测试文件是否打开成功:
if(!file)
{
cout<<“打开文件失败”;
exit(0);
}
或者
if(file.fail())
{
cout<<“打开文件失败!”;
exit(0);
}
读文件:
1.采用>>读文件
格式:file>>name(暂时的数组);
作用:不能读取空格,换行,跳格,只能读取一个非空白字符串,即遇到这三个会停止本次读取进入下一次
缺点:读取出来的数据与文件中的排版不符
2.采用file.getline(buffer,[size]);
作用 :一次读取一行,包括空白字符,遇到换行停止
3.get读文件
格式:file.get(ch)
作用:一次读取一个字符,任意字符
注意:每次读完之后,文件指针都会自动往后跳一个,准备读取下一个!!!,指针在字符左边即准备读取该字符
写文件
1.采用<<写文件
格式:file<<str;
2.put写文件
格式:file.put(ch);
作用:写入一个一个字符
二、二进制文件
打开方式:
只读:file.open(“文件名.格式”,ios::in|ios::binary)
只写:file.open(“文件名.格式”,ios::out|ios ::binary)
追加:file.open(“文件名.格式”,ios::app|ios::binary)
测试是否相同与文本文件相同,经常与结构体或类结合使用,整块的读写数据并且保持数据类型不变
写文件:
file.write((char*)buffer,sizeof(buffer));

b是对象或结构体变量
file.write((char*)&b,sizeof(b));
读文件
file.read((char*)buffer,sizeof(buffer));
同上
三,随机访问文件
ios::beg -----从文件开始计算偏移量
ios::cur-----从当前位置开始计算偏移量
ios::end----从文件尾开始计算偏移量
举例:
读指针
file.seekg(3,ios::beg);
表示将读指针从开始向后移动三位,小于零向后移动,等于零不移动,cur,end类似
写指针
file.seekp(3,ios::beg);第一个位置可以用sizeof计算某个类或结构体的大小再乘以一个长整形数据表示移动了几块数据。方便查询
!!为了避免读取文件最后一行出现重复读取的情况,一般在循环之前先读取一次
如有写的不对的地方,还请指出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Never ♚ Back Down♟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值