第十九章 文件操作

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

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

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 关闭文件

相关推荐
01二进制代码漫游日记7 分钟前
C++基础入门速通
java·开发语言·c++
tudousisi22220 分钟前
二维费用01背包
c++
2601_9561219722 分钟前
高精度问题
c++
橙橙笔记27 分钟前
C++的学习第三部分
开发语言·c++·学习
码匠许师傅9 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
小小龙学IT10 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研12 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
C++ 老炮儿的技术栈13 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qz_Serene15 小时前
C++:类和对象(上)
开发语言·c++
郝学胜-神的一滴17 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程