ifstream、ofstream的使用

文件IO相关的库有

  1. <winbase.h> CreateFile()等,winbase.h定义了win32中base APIS(最基本的c)
  2. <stdio.h>包含fopen(),fread()等(高级一点的c)
  3. MFC下CFile类封装的文件IO操作(MFC、c++)
  4. <fstream>下的文件IO操作(c++)


ofstream的使用

1.打开文件: open(char* fileName, int mode, int access)

mode可以有:

ios::app:   以追加的方式打开文件
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in:    文件以输入方式打开(文件数据输入到内存)
ios::out:   文件以输出方式打开(内存数据输出到文件)
ios::nocreate: 不建立文件,所以文件不存在时打开失败
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:  如果文件存在,把文件长度设为0

tips:理解ios::app:

app是变量名,其被定义于std命名空间下ios类下的static变量,所有也可以写为std::ios::app,同时在ofstream中也定义了app静态变量,所有也可以写ofstream::app

access可以有:

0:普通文件,打开访问
1:只读文件
2:隐含文件
4:系统文件

2.向文件中输出数据:put()、重载运算符<<、write()

1.二进制文件的写:put(char a),输出一个字符。

2.文本文件的写:重载运算符<<,可以输入字符,c风格字符串,string对象,格式化数字。

其中格式化数字的输出规则如下:
操纵符 功能 输入/输出
dec 格式化为十进制数值数据 输入和输出
endl 输出一个换行符并刷新此流 输出
ends 输出一个空字符 输出
hex 格式化为十六进制数值数据 输入和输出
oct 格式化为八进制数值数据 输入和输出
setpxecision(int p) 设置浮点数的精度位数输出

比如要把123当作十六进制输出:file1<<hex<<123;要把3.1415926以5位精度输出:file1<<setpxecision(5)<<3.1415926。

3.数据块的输出 write(const unsigned char *buf,int num);将buf的前num个输出到文件

3.关闭文件 close()

4.辅助操作:

1.文件结束eof()

2.文件指针定位
ostream &seekp(streamoff offset,seek_dir origin);

  • seek_dir 表示移动的基准位置,是一个有以下值的枚举:
  • ios::beg:  文件开头
  • ios::cur:  文件当前位置
  • ios::end:  文件结尾
  • file2.seekp(1234,ios::beg); //把文件的写指针从文件开头向后移1234个字节



Ifstream的使用

1.打开文件open,同ofstream

2.读入文件数据,get (),get(char& x),重载>>,read()

  1. 1.二进制数据的读入get(),get(char& x)  get():返回读入的二进制数据或字符,如果到文件末尾,返回EOF,get(char& x),将得到的字符赋值给x,返回ifstream,当到达文件末尾,返回NULL。
  2. 2.文本文件的读入 重载>>,与ofstream同
  3. 3.数据块的读入。read(),同ofstream.

3.关闭文件colse()

4.辅助函数

  • 文件结束eof(),同ofstream
  • 文件指针定位
  • ifstream& seekg(streamoff offset, seek_dir origin).同ofstream

















  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值