C++基础学习第十四课(文件流)

9.文件流

1,C++提供了文件流,fstream来处理文件;

数据类型描述
ofstream该数据类型表示输出文件流,用于创建文件并向文件写入信息;
ifstream该数据类型表示输入文件流,用于从文件读取信息;
fstream该数据类型通常表示文件流,且同时具有ofstream和ifstream两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息;

2,在从文件读取信息或者向文件写入信息之前,必须先打开文件;

`ofstream用来打开文件进行写操作;

`ifstream用来打开文件进行读操作;

`fstream支持文件的读和写操作;

3,打开文件

`通过构造函数打开;

`通过成员函数open,来打开

定义:
void open(const*filename,ios::openmode mode);
`filename 文件名
`mode 操作模式
方式作用
ios::in以读的方式打开文件
ios::out以写的方式打开文件,如果已有此名字的文件,则将原有的内容全部清除
ios::app以写的方式打开文件,写入的数据添加在文件末尾
ios::ate打开一个已有的文件,文件指针指向文件末尾
ios::trunc打开一个文件,如果文件已存在,则删除其中全部数据,如果文件不存在,则建立新文件,如已经指定ios::out方式,而未指定ios::app,ios::ate,ios::in,则同时默认此方式;
ios::binary以二进制方式打开文件,默认为ASCII方式打开
ios::noreplace如果文件不存在则创建新文件,如果文件已存在则操作失败
ios::in|ios::out以读和写的方式打开文件
ios::out|ios::binary以二进制写的方式打开文件
ios::in|ios::binary以二进制读的方式打开文件
ios::nocreate打开一个已有的文件,如果文件不存在,则打开失败,不创建新文件

注意:从文件输入到内存-----读;

​ 从内存输出到文件-----写;

4,判断是否打开成功

`成员函数:is_open()

`运算符重载:!filename

5,读写文件

`两种主要方式读写文件:

1,流运算符>> <<

2,成员函数 write read;

//文本文件读写
void READ()
{
	//读的方式打开文件
	ifstream f("./mm.txt");
	if (!f.is_open())
	{
		cerr << "open error" << endl;
	}
	char str[123]="";
	//while (!f.eof())//这种方式会忽略空格和换行符
	//{
	//	f >> str;
	//	cout << str;
	//}
	//while (!f.eof())
	//{
	//	//f.getline(str, 123);不忽略空格但还是会忽略换行符
	//	f.get(str, 123);
	//	char ch;
	//	f >> ch;
	//	cout << ch;
	//	cout << str;
	//}
	/*while (!f.eof())
	{
		char ch=f.get();
		cout << ch;
	}*/
	f.read(str, 123);
	cout << str << endl;
	f.close();
}
void Write()
{
	ofstream f("./hh.txt");
	if (!f.is_open()||!f)
	{
		cerr << "error" << endl;
	}
	f << "王德发卧槽牛";
	f.write("\nfdfsdf", 8);
	f.close();
}
//二进制读写
void BinReadWrite()
{
	//图片拷贝
	fstream src("./22.png",ios::in|ios::binary);
	fstream dest("kk.png", ios::out|ios::binary);
	if (!src)
	{
		cerr << "error" << endl;
	}
	if (!dest)
	{
		cerr << "dest error" << endl;
	}
	//while (!src.eof())第一种方法
	//{
	//	char ch = src.get();
	//	dest.put(ch);
	//}
	char hh[999] = "";
	while (!src.eof())//第二种方法
	{
		src.read(hh, 999);
		dest.write(hh, 999);
	}

	src.close();
	dest.close();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值