C++学习笔记:对文件流的写入和读取

前言

c++对文件的读取写入,最简单的是利用下面三个类。

名称描述
ofstreamStream class to write on files
ifstreamStream class to read from files
fstreamStream class to both read and write from/to files.

ofstream建立和写入文件

建立一个名为 test.txt 的文档,写入数据的方式多种。

#include<iostream>
#include<fstream>

using namespace std;

int main() {

	ofstream ofs("test.txt");
	if ( !ofs.is_open() ) {
		cout << "failed" << endl;
		return 0;
	}

	ofs << "hello world!" << endl;  //直接写入

	int a = 10086;
	ofs << a << endl;  //间接写入

	string s = "welcome!";
	ofs << s.c_str() << "\t" << a << endl;    //不同格式混合写入

	string ss = "this is a test for ofstream!\n";
	ofs.write(ss.c_str() , ss.length());      //利用write方法

	ofs.close();


	system("pause");
}

ifstream读取文件

从 test.txt 文档中读取数据,可以使用不同的数据类型来读取,过程都大同小异。

#include<iostream>
#include<fstream>
#include<sstream>

using namespace std;

int main() {

	ifstream ifs;
	ifs.open("test.txt" , ios::in);
	if ( !ifs ) {
		cout << "no such file" << endl;
		return 0;
	}

	cout << "\n**********stringbuf**********\n" << endl;
	string str;
	stringbuf *sb = new stringbuf();
	while ( !ifs.eof() ) {
		ifs >> sb;
		cout << sb;
		str.append(sb->str());
	}
	cout << "\n**********stringbuf to string**********\n" << endl;
	cout << str;
	cout << "\n**********char**********\n" << endl;
	ifs.seekg(0 , ifs.beg); //当前坐标要归零
	char cc;
	while ( !ifs.eof() ) {
		ifs.get(cc);
		cout << cc;
	}
	ifs.close();

	system("pause");
}

最后结果

在这里插入图片描述

fstream对文件读写操作

fstream可以说是上面两个的综合,不过个人建议,还是用上面两个类,编程的时候便于区分。

#include<iostream>
#include<fstream>

using namespace std;

int main() {

	fstream fs("test2.txt" , ios::out); //创建文件
	if ( !fs.is_open() ) {
		cout << "failed" << endl;
		return 0;
	}

	fs << "test2" << endl; //写入数据
	fs.close();

	fs.open("test2.txt" , ios::in); //读取文件
	if ( !fs.is_open() ) {
		cout << "no such file" << endl;
		return 0;
	}

	char c;
	while ( !fs.eof() ) {
		fs.get(c);
		cout << c;
	}

	fs.close();
	
	system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值