【C++】这可能是最不废话的文件操作步骤

I 话不多说,直接操作

II 步骤:

1、创建文件对象(fstream,ifstream,ofstream流):

	fstream file;

2、确定文件路径;

	const string file_address = "C:/Users/kakaz/Desktop/w.txt";

或者


	const string file_address = "C:\\Users\\kakaz\\Desktop\\w.txt";
	

注意不要使用单个’’。

3、确定打开方式(写方式,定位到文件尾部)


	file.open(a, ios::out|ios::ate);

4、判断文件是否存在

	if (file.fail())
	{
		cout << "文件打开失败" << endl;
		return 0;
	}

5、写入数据


	file << "姓名:卡卡" << endl;//后面加上换行符
	file << "年龄:18" << endl;
	file << "班级:控制一班" << endl;

或者利用本身write()函数

while(自定义循环条件){
char buf[100];
memset(buf,0,100);
cin>>buf; //自定义输入
//file<<buf<<endl; //写入方式1
file.write(buf,100);
};

6、关闭文件

file.close();

7、读的方式打开

file.open(file_address , ios::in);

8、读取数据(主要是要注意文件打开后其中的数据是以文件流的形式存在,也相当于cin一样存放在缓冲流,使用方法也类似)


	string s;
	char buf[100];
	while (!file.eof())  //是否读取到文件末尾
	{
		file.get(buf, 100);//遇见enter结束,get只能读取一个
		//file.getline(buf, 100);//此时自动舍弃enter,但是一行数据大于99会出错。
		file.get();//get读取一行不会舍弃enter,所以这里要清除
		file.ignore();//忽略当前字符也可以。
		s.append(buf);  //追加到最终文件
		s.append(1,'\n');//添加被舍去的enter
	}
	cout << s << endl;

或者

	getline(file, s,'\0');//最简洁的写法
	//不要忘记写‘\0’,getline(file, s);只能读取一行数据。

或者利用自带的read()函数。

	char buf[100];
	memset(buf, '\0', 100);//这一步必不可少,设置初始值‘\0’和0均可。
    file.read(buf, 100);//读取到buf
	file.close();//关闭文件
	cout << buf<< endl;//打印

III 好了,只想知道基本文件操作的小伙伴可以止步了,下面这种二进制形式更通用功能更强大,特别处理自定义类型数据

9、二进制读写文件

const char* filename = "C:\\Users\\kakaz\\Desktop\\kaka.txt";
	char p;
	int i = 0;
	//person是自定义类型,存放姓名和年龄
	person p1("卡卡", 25), p2("molaiwei", 43);  //二进制放在内存
	fstream ouf(filename, ios::out | ios::binary);  //二进制写方式打开文件
	ouf.write((char*)&p1,sizeof(p1));  //需要将自定义类型指针强转为char*。
	ouf.write((char*)&p2, sizeof(p1));//长度一定要够
	ouf.close();//写完了记得关闭才生效。
	
	ifstream fim(filename, ios::in|ios::binary); //只读打开
	person *p3 = new person,p4;
	fim.read((char*)p3,sizeof(person));//读取的内存不要越界,不然会错误
	fim.read((char*)&p4, sizeof(person));
	fim.close();

	p3->show();


我是卡卡呀!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值