第十九章 文件操作

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

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

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

文件类型分为两种:

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

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

操作文件的三大类:

  1. ofstream:写操作

  2. ifstream: 读操作

  3. fstream : 读写操作

一、文本文件

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

示例:

cpp 复制代码
 #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

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

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

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

  • 操作完毕,要关闭文件

2、读文件

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

读文件步骤如下:

  1. 包含头文件

    #include <fstream>

  2. 创建流对象

    ifstream ifs;

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

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

  4. 读数据

    四种方式读取

  5. 关闭文件

    ifs.close();

示例:

cpp 复制代码
 #include <fstream>
 #include <string>
 void test01()
 {
     ifstream ifs;
     ifs.open("test.txt", ios::in);
 ​
     if (!ifs.is_open())
     {
         cout << "文件打开失败" << endl;
         return;
     }
 ​
     //第一种方式
     //对于ifs>>buf流输入方式存取,其原则是当碰见空格之后,就结束当前读取,所以想要读取完文本内容,就必须借助while,当没有字符读入时结束文本读取。
     //char buf[1024] = { 0 };
     //while (ifs >> buf)
     //{
     //  cout << buf << endl;
     //}
 ​
     //第二种
     //对于ifs.getline读取方法,和getline全局函数类似。也是按行读取,并且当遇到'\n'之后,结束当前行读取。直到没有数据读取就结束当前文本读取。(注:读取的时候也会将空格读入数组,在提取数据的时候,就需要指定关键信息存取)
     //char buf[1024] = { 0 };
     //while (ifs.getline(buf,sizeof(buf)))
     //{
     //  cout << buf << endl;
     //}
 ​
     //第三种
     //对于全局函数getline的用法,由于该函数默认是一行一行的读取,所以需要while循环来读取txt文本的所以内容,当遇到'\n',标志读取该行结束。当读取不到任何字符的时候就返回false,可用于判断文件是否结束
     //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 关闭文件

相关推荐
_李小白29 分钟前
【C++学习笔记】新特性之inline变量
c++·笔记·学习
桀人1 小时前
C++——模板初阶(收录在专栏C++入门到精通)
开发语言·c++
Lumbrologist1 小时前
【C++】零基础入门 · 第 2 节:变量、基本数据类型与输入输出
java·开发语言·c++
XX風1 小时前
CMake / Make / Ninja / MSVC / GCC / Clang / MSBuild —— 完整体系化理解
c++
Peter·Pan爱编程2 小时前
10. new_delete 不是 malloc_free 的包装
c++·人工智能·算法
故事和你913 小时前
洛谷-【动态规划1】动态规划的引入2
开发语言·数据结构·c++·算法·动态规划·图论
fpcc4 小时前
c++编程实践——历史记录的管理
c++
玖笙&5 小时前
✨WPF编程基础【3.3】:容器控件(附源码)
c++·wpf·visual studio
汉克老师5 小时前
GESP5级C++考试语法知识(十七、二分算法提高篇(二))
c++·算法·二分算法·gesp5级·gesp五级·二分算法易错点
我材不敲代码6 小时前
Python 正则表达式进阶实战:从文本清洗到复杂信息提取
c++·python·正则表达式