C++文件输入流和输出流的基本使用

在了解文件的输入流输出流时,首先我们来了解一下文件的打开方式有哪些?

文件打开方式

ios::in读的方式打开
ios::out写的方式打开
ios::trunc如果文件已经存在,打开文件之前就会把长度截为0
ios::binary以二进制方式写(默认是文本方式)
ios::ate 文件打开后定位到文件尾部
ios::app尾部追加写入

这些打开方式,都可以用位操作 | 组合使用.

对文件进行输入流,输出流的操作,需要使用头文件:

6a88972d2a704214b473e4c2932c1224.png

使用 fstream,可以定义一个对文件的输入流对象,也可以定义文件的输出流对象,但是在打开文件的时候,需要指明使用的是哪种文件打开方式.如果是用来写文件,那么就要在文件打开的时候时候在文件名后面加上 ios::out,例如:

d8f7b1d7f64f450cae40b96cddf13d98.png

 读文件就需要在后面加上ios::in .

 

定义文件的输入流对象

ifstream  是专门用来定义文件的输入流对象,这时候可以不写文件打开方式(默认为ios::in),

1d51e490c1e0476189d4f45acc857947.png

 示例代码:

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int main()
{
	string name;
	int age;
	ifstream inFile;//定义了一个文件输入流对象

	inFile.open("user.txt");//文件默认为 ios::in 打开方式

	while (1) {
		inFile >> name;
		if (inFile.eof()) { //判断文件是否结束
			break;
		}
		cout << name << "\t";

		inFile >> age;
		cout << age << endl;
	}

	// 关闭打开的文件
	inFile.close();

	system("pause");
	return 0;
}

在读取文件的内容的时候,需要使用符号 >> 把文件的内容读取到变量name,age中,

 

定义文件的输出流对象

ofstream,时专门来定义文件的输出流对象的,同样不需要写文件打开方式(但编译器已经默认是ios::out)方式,

66464eae9e834e1180cf2df33205e06f.png

 示例代码:

#include<iostream>
#include<fstream>//文件操作

using namespace std;

int main1(void) {
	string name;
	int age;

	ofstream outFile;//定义了一个文件输出流对象
	outFile.open("user.txt");//使用输出流对象打开一个文件

	// 建议指定打开方式
	// ofstream的默认打开方式是 ios::out,截断式写入 ios::trunc

	//使用输出流对象打开一个文件, ios::out | ios::trunc
	//outFile.open("user.txt", ios::out | ios::trunc);

	while (1) {
		cout << "请输入姓名:[ctrl+Z推出]";
		cin >> name;

		if (cin.eof()) {
			break;
		}

		//把输入的姓名写入文件
		outFile << name << "	";

		cout << "请输入年龄";
		cin >> age;

		outFile << age << endl;
	}
	//关闭刚才打开的文件流
	outFile.close();


	system("pause");
	return 0;
}

需要用符号 << 把从键盘输入的数据,写到定义好的文件输出流对象 outFile 里面.

 

二进制的文件打开方式

读:

5c8a87382ae149c795218bf7200706c1.png

 写:

2ec58489a63a4c758f1395d170bcf555.png

 

以上就是今天的分享了!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值