首页 > 其他分享 >五、文件操作

五、文件操作

时间:2024-07-11 12:59:48浏览次数:15  
标签:文件 ifs 二进制 ios char 操作 buf

1.文本文件

(1)写文件

程序运行时产生的数据都属于临时数据,程序一旦结束就会被释放

通过文件可以将数据持久化

C++中对文件操作需要包含头文件<fstream>

文件类型分为两种:

文本文件:文件以文本的ASCII码形式存储在计算机中

二进制文件:文件以文本的二进制形式存储在计算机中,用户读不懂

操作文件的三大类:(C++中的标准类)

ofstream:写操作   //以此类生成的文件对象只能写

ifstream:读操作   //以此类生成的文件对象只能读取

fstream:读写操作  //以此类生成的文件对象既可以写也可以读取

写文件的步骤:

包含头文件  #include <fstream>

创建流对象  oftream ofs;

打开文件   ofs.open(”文件路径”,打开方式);(文件名字.后缀扩展名)

写数据   ofs << “写入的数据”;

关闭文件  ofs.close();

文件打开方式:

打开方式

解释

ios::in      **

为读文件而打开文件

ios::out     **

为写文件而打开文件

ios::ate

初始位置:文件尾

ios::app

追加方式写文件

ios::trunc

如果文件存在先删除,再创建

ios::binary

二进制方式

注意:

文件打开方式可以配合使用,利用  |  操作符

例如:用二进制方式写文件  ios::binary | ios::out

生成新文件的话,没有指定文件的路径,会与程序保存在一个文件夹目录中

(2)读文件

包含头文件  #include <fstream>

创建流对象  iftream ifs;

打开文件并判断是否打开成功

ifs.open(”文件路径”,打开方式);(文件夹名字.后缀扩展名)

读取数据   四种方式读取

关闭文件  ofs.close();

四种读取方式

第一种

char buf[1024] = {0};

while (ifs >> buf)

{

cout << buf << endl;

}

第二种

char buf[1024] = {0};

while(ifs.getline(buf,sizeof(buf)))

{cout << buf << endl;

}

第三种

string buf;

while(getline(ifs,buf))

{cout << buf << endl;}

第四种

char c;

while( (c = ifs.get() != EOF))   //EOF是end of file,文件尾部

{cout << c ;}

利用is_open函数判断文件是否打开成功

2.二进制文件

(1)写文件

以二进制方式对文件进行读写操作

打开方式指定为ios::binary

二进制方式写文件主要利用流对象调用成员函数write

函数原型

ostream& write( const char * buffer ,int len);

参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数

Person p = {"张三",18};

     ofs.write((const char*)&p,sizeof(Person));  //把p强制转换成char*类型

(2)读文件

二进制方式读文件主要利用流对象调用成员函数read

函数原型

istream& read( const char * buffer ,int len);

参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数

Person p = {"张三",18};

     ifs.write((char*)&p,sizeof(Person)); 

标签:文件,ifs,二进制,ios,char,操作,buf
From: https://blog.csdn.net/weixin_62492456/article/details/140264610

相关文章

  • FUSE(用户空间文件系统)命令参数
    GPT-4(OpenAI) FUSE(FilesysteminUserspace)是一个允许创建用户空间文件系统的接口。它提供了一个API,让开发者在未修改内核代码的情况下,通过自己的程序实现文件系统。FUSE文件系统通常通过mount命令来挂载,而且这个命令可以接受各种参数。以下是一些FUSE的常见参数:--......
  • 在Linux中,ptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
    在Linux中,iptables是一个非常强大的防火墙工具,用于配置网络传输相关规则。然而,iptables本身并不支持基于时间的规则控制,也就是说,它不能直接根据时间来控制用户行为或网络流量。iptables的规则是基于包的源地址、目的地址、端口号、协议类型等来决定是否允许或拒绝数据包。但是......
  • 解决Github访问速度慢的问题(修改 HOSTS 文件)
    1.查询http://github.com的ip地址链接:http://github.global.ssl.fastly.net.ipaddress.com/#ipinfoIP:140.82.113.32.查询https://github.global.ssl.fastly.net的IP地址链接:https://github.com.ipaddress.com/#ipinfoIP:151.101.1.1943.修改本地hosts文件映......
  • linux文件系统损坏如何修复
    修复损坏的Linux文件系统的方法取决于具体的损坏原因和文件系统类型。以下是一些常见的修复方法:使用fsck命令:打开终端并以root用户身份登录。运行fsck命令来检查和修复文件系统。例如,如果文件系统是ext4类型,可以运行fsck.ext4/dev/sda1来检查和修复/dev/sda1分区上的文件系统......
  • C#+OpenCV进阶(三)_操作摄像头与视频文件
    1、VideoCapture的常用属性#region常用属性//_=videoCapture.CaptureType;//获取视频的捕获类型(文件或摄像头)//_=videoCapture.PosAviRatio;//获取或设置视频的相对位置(0开头1结尾)//_=videoCapture.FourCC;//获取或设置视频的编解码的4字符代码//_=......
  • RAID10磁盘阵列损坏修复操作
    服务器数据恢复是指将物理服务器或虚拟服务器上丢失的数据重现还原的操作。随着信息化的深入,企事业单位大都会配备服务器,方便数据集中存储管理,建立自己的信息系统。服务器上的数据通常是存储在硬盘上,出于数据安全和性能的考虑,这些硬盘会组建RAID磁盘阵列。服务器对用户的重要程度......
  • Linux学习笔记(02)——文件相关知识
    文件系统结构/bin存放二进制可执行文件,这些命令在单用户模式下也能够使用。可以被root和一般的账号使用。/bootUbuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。/dev设备驱动文件/etc存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址。/h......
  • PowerQuery 汇总系列 - 多文件、单工作表数据
    文章目录1.唠叨几句2.从文件夹中获取Excel工作薄数据2.1.常规解法:【添加自定义列】2.2.进阶解法:修改【转换】功能生成的M公式2.3.高阶解法:一行搞定,一个查询步骤搞定多文件汇总2.4.一点细节3.版本建议4.留点问题Authors@樊笼星海@......
  • Leetcod 1342.将数字变成0的操作次数
    题目要求:给你一个非负整数num,请你返回将它变成0所需要的步数。如果当前数字是偶数,你需要把它除以2;否则,减去1。示例1:输入:num=14输出:6解释:步骤1)14是偶数,除以2得到7。步骤2)7是奇数,减1得到6。步骤3)6是偶数,除以2得到3。步骤4)......
  • 如何实现网络隔离状态下,文件摆渡的全生命周期管控?
    随着信息化建设的不断推进,计算机技术的飞速发展,电子文档已经成为了企业信息资产的主要载体,例如Office文档、源代码、CAD图纸、配方工艺、方案、竞标书等。为了符合国家等保要求,保护数据在存储、传输、处理过程中不被泄漏、破坏和免受未授权的修改的信息安全类要求,大部分企业会进行......