文本文件的读写

C++也能完成文件的读写,通过引入 fstream来调用文件操作方法,以下是文本文件读写的代码.
首先引入依赖

#include <iostream> //操作流的依赖 此处用于实处
#include <string> //string的依赖 此处为了使用字符串
#include <fstream> //文件操作
using namespace std; //string的命名空间 用于限定

然后是创建读写文件的对象

ifstream ifs;//读文件
ofstream ofs;//写文件
fstream fs;//读写文件

fstream 同时包含了读与写的功能,所以如果使用它就不需要使用前两个了
此处的操作顺序为先写文件,然后再读文件,以下为了效果,所以使用的是单独的读或写文件的对象.
文件的写入首先需要打开或创建指定的文件

ofs.open("text.txt",ios::out);

使用写文件的open方法,传入两个参数,第一个参数为打开的文件,路径加名称,没有路径则为当前文件夹下,第二个参数为打开方式,ios::in读,ios::out 写,ios::ate初始位置,ios::app文件尾,ios::trund如果文件存在,则删除原文件,然后再创建,ios::binary追加写入.如果需要同时使用多个功能,则通过符号’|’来分割,例如:ios::trund|ios::in,已二进制方式读写文件
打开文件后,就可以写入文件了.

ofs << "这是文件的第一行" << endl;
ofs << "这是文件的第二行" << endl;
ofs << "这是文件的最后一行" << endl;

写入的写法较为简单,与输出的写法类似,也可以通过endl或\n来换行

写入完成后就可以通过读取来看效果了,

ifs.open("text.txt", ios::in);//读文件

一样是打开文件.注:打开文件的方式除了使用open方法外,还可以在创建对象时就直接传参,传入的参数与open方法的参数一致
然后为了防止文件打开失败而导致读取代码出现问题,所以可以先判断

if (!(ifs.is_open()))
{
	cout << "文件打开失败!!!" << endl;
	return 0;
}

读写的对象有一个is_open()的成员方法,可以用来判断文件是否打开成功,
如果打开失败,则提示用户,然后跳出方法.注:此处由于是直接写在main方法中,所以返回值是0.如果是其他方法,请自行注意放回值
文件打开后就可以读取了,读取的方法一共有四种
第一种:使用字符数组直接读取ifs对象中的内容

//方式一
char buf[1024] = { 0 };
while (ifs >> buf) //当读到文件尾时会返回false
{
	cout << buf << endl;
}

第二种:一样使用字符数组,但通过ifs对象的getlien成员方法直接以行的形式读取

//方式二  
char buf[1024] = { 0 };
while (ifs.getline(buf,1024))	{
	cout << buf << endl;
}

getline: 以行为单位进行读取,第一个参数为读取的数据,第二个参数为单次读取的最大读取量,单位为bit
第三种:使用string存储查出的数据,使用全局的getline方法查询

//方式三
string buf;
while (getline(ifs, buf))
{
	cout << buf << endl;
}

全局的getline函数的参数:第一个为读取的对象,第二个是接收的变量
第四种:使用字符.通过ifs的get方法查询,单次读取一个字符,效率较低,不推荐使用

//方式四  不推荐使用,效率较低
char buf;
while ((buf = ifs.get()) != EOF)
{
	cout << buf;
}

注: EOF 为 End Of File 文件结尾
读取与写入都完成后,不要忘记关闭流

ofs.close();
ifs.close();
fs.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值