ifstream和ofstream的理解

ifstream和ofstream的理解

开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年06月04日

各种计算机应用系统通常把一些相关信息组织起来保存在外存储器中,称为文件,并用一个名字(称为文件名)加以标识
C++把文件看成无结构的字节流,
编码方式: 文本方式 二进制方式
存取方式: 顺序存取 随机存取
ifstream、ofstream 和 fstream 类用于内存与文件之间的数据传输
我们的ifstream用于读文件、ofstream用于写文件,而fstream可以执行读写操作。
文件操作的基本步骤:
打开文件
读 / 写文件
关闭文件
包括建立文件流对象;与外部文件关联;指定文件的打开方式
打开文件有两种方法:
首先建立流对象,然后调用fstream::open()函数连接外部文件
流类 对象名 ;
对象名 . open ( 文件名 , 方式 ) ;
调用流类带参数的构造函数,建立流对象的同时连接外部文件
流类 对象名 ( 文件名 , 方式 ) ;
open 函数原型
void open ( const char * , int mode , int = filebuf :: openprot ) ;
filebuf、ifstream、ofstream、fstream的构造函数具有相同的参数和缺省值
文件流的构造函数和 open ( ) 函数用于打开文件,析构函数在流对象被删除之前关闭文件
其中,第一个参数表示相关联的文件名、第二个参数表示文件的打开方式、第三个参数是文件的保护方式,一般只用缺省值。
我们先来看一个简单的例子吧:

#include <iostream>
#include <fstream>
using namespace std;
void main() {
	ifstream in("main.cpp");
	char i;
	while (in.get(i))
	{
		cout << i;
	}
}

我这例子是读我当前这个main.cpp文件,也就是我们当前写代码的文件。我读了之后将它进行控制台输出,那么我们来看下边的结果图:

在这里插入图片描述
从这里我们可以看到我们控制台输出的数据跟我们的main.cpp里边的是一样的。
我们这里主要用到了ifstream进行读文件,然后进行控制台输出。
那么我们来看一下简单的ofstream的例子:

#include <iostream>
#include <fstream>
using namespace std;
void main() {
	ifstream in("main.cpp");
	ofstream out("main.txt");
	char i;
	while (in.get(i))
	{
		out << i;
	}
}

例子还是一样,主要的作用是将我们main.cpp里边的内容写入到我们main.tex文件里面。至于这个main.txt文件呢,我们需要去查看它刚开始时是否存在。当我们开始的时候main.txt文件不存在的时候,那么它会自己创建文件,然后进行写入。当我们开始的时候有main.txt文件的时候,那么我们里边的内容将会被我们一次的覆盖掉,所以我们需要注意一下。
在这里插入图片描述
这是我们第二次执行的结果。
在这里插入图片描述
还有就是我们的路径问题,我这里用的是相对路径,当然我们有可以用绝对路径,那么我们需要将路径打完整。相对路径呢它是相对于我们main.cpp来说的,也就是我们的这个执行文件。
至于还有什么其他大作用,还得慢慢的去研究了。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ifstreamofstream是C++中用于文件输入和输出的类。ifstream用于从文件中读取数据,而ofstream用于向文件中写入数据。\[1\]在给定文件名的情况下,可以使用ifstream对象打开文件并从中读取数据,而使用ofstream对象可以创建或打开文件并将数据写入其中。\[1\]这两个类都是从基类iostream派生而来,因此它们也继承了iostream类的一些成员函数,比如seekg和seekp,用于重新定位文件位置指针。\[2\]通过使用插入器(<<)和析取器(>>)运算符,可以将数据插入到流中或从流中提取数据。\[3\]在C++中,对文件的操作是通过fstream类来实现的,因此需要包含头文件<fstream>。 #### 引用[.reference_title] - *1* [ifstreamofstream理解](https://blog.csdn.net/weixin_44545509/article/details/90813194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C++文件和流](https://blog.csdn.net/Calvin_zhou/article/details/79366119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ofstreamifstream详细用法](https://blog.csdn.net/u014800094/article/details/107705860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值