5 文件操作

程序运行时产生的数据都属于临时数据,程序一点运行结束,就会被释放
通过文件可以将数据持久化
C++中对文件操作需要包含头文件:fstream

文件类型分为两种:

  • 文本文件:文件以文本的ASCII码形式存储在计算机中
  • 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们

操作文件的三大类

  1. ofstream 写操作
  2. ifstream 读操作
  3. fstream 读写操作

5.1 文本文件

5.1.1 写文件

写文件步骤如下:

  1. 包含头文件
    #include <fstream>
  2. 创建流对象
    ofstream ofs;
  3. 打开文件
    fos.open("file_path", open_type);
  4. 写数据
    ofs << "写入的数据";
  5. 关闭文件
    ofs.close();

文件打开方式:

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

注意: 文件打开方式可以配合使用,利用 |操作符
例如:利用二进制方式写文件 ios::binary | ios::out

文件写示例:

#include<iostream>
using namespace std;// 文本文件写文件
// 1. 包含头文件
#include <fstream>void test01()
{// 2. 创建文件流对象ofstream ofs;// 3. 打开文件ofs.open("test.txt", ios::out);// 4. 写入内容ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;// 5. 关闭文件ofs.close();
}int main()
{test01();return 0;
}

注意: 文件打开,没有指定路径,文件生成在和代码同在一个文件夹下

5.1.2 读文件

读文件和写文件步骤相似,但是读取的方式比较多

读文件步骤如下:

  1. 包含头文件
    #include <fstream>
  2. 创建流对象
    ifstream ifs
  3. 打开文件并判断文件是否打开成功
    fis.open("文件路径“, 打开方式);
  4. 读数据
    四种方式读取
  5. 关闭文件
    ifs.close();

示例:

#include<iostream>
using namespace std;
#include<string>// 文本文件读文件
// 1. 包含头文件
#include <fstream>void test01()
{// 2. 创建文件流对象ifstream ifs;// 3. 打开文件ifs.open("test.txt", ios::in);// 判断打开是否成功if (!ifs.is_open()){cout << "文件打开失败!" << endl;return;}// 4. 读内容// 第一种://char buf[1034] = { 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;//}// 5. 关闭文件ifs.close();
}int main()
{test01();return 0;
}

5.2 二进制文件

以二进制的方式对文件进行读写操作
打开方式为:ios::binary

5.2.1 写文件

二进制方式写文件主要利用流对象调用成员函数 write
函数原型:ostream& write(const char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间、len是读写的字节数

示例:

#include<iostream>
using namespace std;
#include<string>// 包含头文件
#include <fstream>// 二进制文件,写文件
class Person
{
public:char name[64];   // 姓名int age;       // 年龄
};void test01()
{// 2. 创建文件流对象ofstream ofs;// 也可以用如下写法// ifstream ifsm("person.txt", ios::out | ios::binary)// 3. 打开文件ofs.open("person.txt", ios::out | ios::binary);// 准备数据Person p = {"张三", 20};// 4. 写数据ofs.write((const char *)&p, sizeof(Person));// 5. 关闭文件ofs.close();
}int main()
{test01();return 0;
}

5.2.2 读文件

二进制方式读文件主要利用流对象调用成员函数read
函数原型:iostream& read(char *buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间、len是读写的字节数

示例:

#include<iostream>
using namespace std;
#include<string>// 包含头文件
#include <fstream>// 二进制文件,读文件
class Person
{
public:char name[64];   // 姓名int age;       // 年龄
};void test01()
{// 2. 创建文件流对象ifstream ifs;// 也可以用如下写法// ifstream ifsm("person.txt", ios::out | ios::binary)// 3. 打开文件ifs.open("person.txt", ios::in | ios::binary);// 判断文件是否打开成功if (!ifs.is_open()){cout << "打开文件失败" << endl;return;}// 准备数据Person p;// 4. 写数据ifs.read((char *)&p, sizeof(Person));cout << "姓名:" << p.name << endl;cout << "年龄:" << p.age << endl;// 5. 关闭文件ifs.close();
}int main()
{test01();return 0;
}

运行结果:

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

  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. C++核心编程(11)--文件操作

    目录 11 文件操作 11.1文本文件 11.1.1写文件 11.1.2读文件 11.2 二进制文件 11.2.1 写文件 11.2.2 读文件 11 文件操作 程序运行时产生的数据都属于临时数据,程 ...

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

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

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

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

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

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

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

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

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

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

  8. Python编程之文件操作

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

  9. python学习笔记Day4 面向对象编程,文件操作,os模块,代码调试

    一.traceback模块 错误日志可能用到 import tracebackwhile 1: # 捕获异常的顺序按照先父类后子类try:n1 = int(input('请输入一个被除数'))n2 = ...

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

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

最新文章

  1. 2013年中国高校网购实力排行榜
  2. python小练习之一
  3. 判断一个数是否是2的幂
  4. 20135302魏静静——linux课程第六周实验及总结
  5. 网络工程师必须懂的十五大专业术语!
  6. Mybatis中的updateByPrimaryKeySelective()和updateByPrimaryKey()
  7. Git---命令行语法
  8. 小规模团队如何“微服务”管理
  9. Python 绘图字体控制 + 文字在图片中的位置调整
  10. 【Python】实现isPrime()函数判断质数+异常处理
  11. Opencv之threshold
  12. 二维码在线制作免费快速
  13. idea clean Process terminated
  14. 案例介绍 犹他州交通规划网络地图中心
  15. 腾讯云折(tian)腾(keng)记
  16. 【pwnable.kr】 passcode
  17. FXO端口的断开呼叫的问题(转)
  18. 第九课 Java基础篇——面向对象(综合案例)
  19. 激光式气体传感器的检测原理及优势
  20. 搭建git服务器及利用git hook自动布署代码

热门文章

  1. php批量导出pdf文件大小,php完美导出pdf,pdf合并批量导出
  2. 2022-2028年中国农副产品行业市场供需规模及未来前景分析报告
  3. 【Sql Server】数据库的3大服务
  4. array.array python yhzf
  5. bert推理速度太慢如何解决
  6. Jackson、FastJson快速入门(整合SpringMVC)
  7. pass基础架构分析
  8. QNX Hypervisor管理程序
  9. Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构)
  10. 堆叠式传感器架构带来先进的视觉功能