前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++中的文件和流

C++中的文件和流

作者头像
青木
发布2018-05-28 15:46:02
1.1K0
发布2018-05-28 15:46:02
举报

所需头文件:

代码语言:javascript
复制
#include<iostream>
#include<fstream>

标准库fstream中定义了三种新的数据类型:

  • ofstream 表示输出文件流,用于创建文件并向文件写入信息
  • ifstream 表示输入文件流,用于从文件读取信息
  • fstream 同时具有上面了两种数据类型的功能,可以创建文件,向文件写入信息,从文件读取信息

打开文件

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

代码语言:javascript
复制
void open(const char *filename,ios::openmode mode);
//open()函数是fstream、ifstream、ofstream对象的一个成员

open()函数第二个参数定义文件被打开的模式,模式有一下几种:

  • ios::app 追加模式,所有写入都追加到文件末尾
  • ios:ate 文件打开后定位到文件末尾
  • ios::in 打开文件用于读取
  • ios::out 打开文件用于写入
  • ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断, 即将文件长度设为0

可以把上面的几种模式混合使用,比如,想以写入的模式打开文件,并且希望截断文件,以防止文件已经存在,可以用下面的写法:

代码语言:javascript
复制
ofstream afile;
afile.open("file.dat",ios::out | ios::trunc);

关闭文件

当C++程序终止时,会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但是为了防止内存泄露,应该手动释放使用完毕的流资源。

代码语言:javascript
复制
void close();
//close()是fstream,ifstream,ofstream对象的一个成员

写入/读取文件

用流插入运算符<<向文件写入信息,就像使用该运算符输出信息到屏幕上一样 用流提取运算符>>从文件读取信息,就像使用该运算符从键盘输入信息一样

代码语言:javascript
复制
#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main(int argc, char const *argv[])
{
	/* code */
	char data[100];

	ofstream  outfile;
	outfile.open("afile.txt");

	cout<<"Writing to the file"<<endl;
	cout<<"Enter your name:";
	cin.getline(data,100);

	outfile<<data<<endl;

	cout<<"Enter your age:";
	cin>>data;
	cin.ignore();//ignore()会忽略掉之前读语句留下的多余字符

	outfile<<data<<endl;

	outfile.close();

	ifstream infile;
	infile.open("afile.txt");

	cout<<"Reading from file"<<endl;
	infile>>data;
	cout<<data<<endl;

	infile>>data;
	cout<<data<<endl;

	infile>>data;
	cout<<data<<endl;

	infile.close();

	return 0;
}
//这个程序有一个问题:输入的字符串中不能包含空白字符
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 打开文件
  • 关闭文件
  • 写入/读取文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档