目录

11 文件操作

11.1文本文件

11.1.1写文件

11.1.2读文件

11.2 二进制文件

11.2.1 写文件

11.2.2 读文件


11 文件操作

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

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

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

文件类型分为两种:

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

  2. 二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类:

  1. ofstream:写操作

  2. ifstream: 读操作

  3. fstream : 读写操作

11.1文本文件

11.1.1写文件

写文件步骤如下:

  1. 包含头文件

    #include <fstream>

  2. 创建流对象

    ofstream ofs;

  3. 打开文件

    ofs.open("文件路径",打开方式);

  4. 写数据

    ofs << "写入的数据";

  5. 关闭文件

    ofs.close();

文件打开方式:

打开方式 解释
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 初始位置:文件尾
ios::app 追加方式写文件
ios::trunc 如果文件存在先删除,再创建
ios::binary 二进制方式

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

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

示例:

#include <fstream>void test01()
{ofstream ofs;ofs.open("test.txt", ios::out);ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;ofs.close();
}int main() {test01();system("pause");return 0;
}

总结:

  • 文件操作必须包含头文件 fstream

  • 读文件可以利用 ofstream ,或者fstream类

  • 打开文件时候需要指定操作文件的路径,以及打开方式

  • 利用<<可以向文件中写数据

  • 操作完毕,要关闭文件

11.1.2读文件

读文件与写文件步骤相似,但是读取方式相对于比较多

读文件步骤如下:

  1. 包含头文件

    #include <fstream>

  2. 创建流对象

    ifstream ifs;

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

    ifs.open("文件路径",打开方式);

  4. 读数据

    四种方式读取

  5. 关闭文件

    ifs.close();

示例:

#include <fstream>
#include <string>
void test01()
{ifstream ifs;ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//第一种方式//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){cout << c;}ifs.close();
}int main() {test01();system("pause");return 0;
}

总结:

  • 读文件可以利用 ifstream ,或者fstream类

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

  • close 关闭文件

11.2 二进制文件

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

打开方式要指定为 ios::binary

11.2.1 写文件

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

函数原型ostream& write(const char * buffer,int len);

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

示例:

#include <fstream>
#include <string>class Person
{
public:char m_Name[64];int m_Age;
};//二进制文件  写文件
void test01()
{//1、包含头文件//2、创建输出流对象ofstream ofs("person.txt", ios::out | ios::binary);//3、打开文件//ofs.open("person.txt", ios::out | ios::binary);Person p = {"张三"  , 18};//4、写文件ofs.write((const char *)&p, sizeof(p));//5、关闭文件ofs.close();
}int main() {test01();system("pause");return 0;
}

总结:

  • 文件输出流对象 可以通过write函数,以二进制方式写数据

11.2.2 读文件

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

函数原型:istream& read(char *buffer,int len);

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

示例:

#include <fstream>
#include <string>class Person
{
public:char m_Name[64];int m_Age;
};void test01()
{ifstream ifs("person.txt", ios::in | ios::binary);if (!ifs.is_open()){cout << "文件打开失败" << endl;}Person p;ifs.read((char *)&p, sizeof(p));cout << "姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
}int main() {test01();system("pause");return 0;
}

文件输入流对象 可以通过read函数,以二进制方式读数据

C++核心编程(11)--文件操作相关推荐

  1. 【黑马程序员 C++教程从0到1入门编程】【笔记6】C++核心编程(文件操作)

    文章目录 5 文件操作 5.1文本文件 5.1.1写文件 5.1.2读文件 5.2 二进制文件 5.2.1 写文件(用二进制方式写时最好别用c++的string) 5.2.2 读文件 https:// ...

  2. mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作

    一次性进群,长期免费索取教程,没有付费教程. 教程列表见微信公众号底部菜单 进微信群回复公众号:微信群:QQ群:460500587 微信公众号:计算机与网络安全 ID:Computer-network ...

  3. 【Java 编程】文件操作,文件内容的读写—数据流

    一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...

  4. Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)

    Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...

  5. 11. 文件操作与模块

    目录 一.文件操作 (一)文件打开和关闭 (二)文件读写 文件打开模式:w w+  wb+ (二进制格式打开文件)     [写文件] 文件打开模式:r  r+(只读)   rb  rb+(二进制格式 ...

  6. Linux C/C++编程: 文件操作open/close、fopen与freopen/fclose

    open是linux下的底层系统调用函数,fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. linxu下的fopen是open的封装函数,fopen最终还是要调用底层的系 ...

  7. 该文件可能是只读的 或者您要访问的位置_Linux应用编程之文件操作 系统调用篇(下)...

    关注.星标公众号,直达精彩内容 ID:嵌入式情报局 作者:情报小哥 1文件操作实战 上篇文章跟大家介绍了Linux系统调用的文件操作API函数,其实跟C语言中的文件读取操作差不多,所以今天小哥就利用那 ...

  8. Python编程之文件操作

    1. 基本数据结构 1.1. bytes和bytearray bytes是一个数据结构类,是描述字节流序列对象,内存分配是连续的,是不可变类型. bytearray是一个数据结构类,是描述字节流序列对 ...

  9. Linux系统编程 | 01 -文件操作

    一.文件操作方法 linux中有两种方法可以操作文件:系统调用和c库函数. 1. 什么是系统调用? 由操作系统实现并提供给外部应用程序的编程接口(API),是应用程序同系统之间数据交互的桥梁. C标准 ...

最新文章

  1. Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战
  2. 谁说LINQ复杂查询不支持返回实名类型~复杂结果集中再使用复杂结果集
  3. 框架下cookie的使用_为什么自动化运维系统越来越多使用都RESTful API?
  4. python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法
  5. MFC让窗口最前端显示
  6. android:layout_marginbottom=,Android: Retrieve layout_marginBottom programmatically?
  7. Sql Server 中利用游标对table 的数据进行分组统计式输出…
  8. Linux全攻略--Apache服务器配置与管理(三)
  9. android9 添加开机音乐
  10. 2021-泛微OA V8 SQL注入漏洞
  11. LTM(Lifelong Topic Modeling)介绍
  12. 力扣刷题 DAY_83 贪心
  13. video标签 或 微软云 azure-media-player 禁止在iphone safari中默认全屏播放
  14. 6-4 学生成绩链表处理(20 分)
  15. Android自定义SurfaceView简单实现烟花效果
  16. rk3399 rv1126上使用wk2124
  17. 我的程序员之路:11 年高考结束到 17 年日本修士的心路历程
  18. 3Dcnn 降假阳性模型调试(七)
  19. 【GNN】VGAE:利用变分自编码器完成图重构
  20. 母婴商城网站的可行性分析报告

热门文章

  1. 园艺应用的计算机知识,第一章 计算机在农业上的应用 绪论 ppt课件.ppt
  2. 计算机中有符号的机器数,机器数
  3. 使用移远BC28模块遇到的问题
  4. 如何在Windows 10上打开RAW图像文件
  5. lnmp mysql my.cnf_LNMP环境搭建-mysql
  6. 网络热评的牛年最红护肤品
  7. “0xc000007b无法正常启动”我的解决方案
  8. A4黑白打印多少钱一张
  9. 【无限互联】mac系统读写NTFS
  10. 精确版NEIE全新版视听说3(网络版)答案{试听说3答案}