第十九章 文件操作

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

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

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

相关推荐
奋斗的小花生3 小时前
c++ 多态性
开发语言·c++
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
UestcXiye5 小时前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
霁月风6 小时前
设计模式——适配器模式
c++·适配器模式
jrrz08286 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
咖啡里的茶i6 小时前
Vehicle友元Date多态Sedan和Truck
c++
海绵波波1077 小时前
Webserver(4.9)本地套接字的通信
c++
@小博的博客7 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
爱吃喵的鲤鱼8 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
7年老菜鸡8 小时前
策略模式(C++)三分钟读懂
c++·qt·策略模式