文章目录

  • 写在前面
  • 文本文件的读写操作流程
    • 一、写文件
    • 二、读文件
    • 三、关于文件的打开方式
  • 二进制文件的读写操作
    • 一、写文件
    • 二、读文件

写在前面

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

  2. 文件类型分为两种

    文本文件:文件以文本对ASCII码形式存储在计算机中
    二进制文件:文件以文本的二进制形式存储在计算机中

  3. 操作文件的三大操作

    ofstream:写操作
    ifstream:读操作
    fstream:读写操作

文本文件的读写操作流程

一、写文件

(1) 流程

  1. 包含头文件:<fstream>
  2. 创建输出流对象:ofstream ofs;
  3. 输出流对象调用open方法打开文件:ofs.open("文件路径", 打开方式)
  4. 输出数据:ofs << 数据;
  5. 关闭流:ofs.close();

(2) 测试

#include<iostream>
#include<string>
#include <fstream>
using namespace std;void outputToFile(string file, string content, int mode) {ofstream ofs;ofs.open(file, mode);ofs << content << endl;ofs.close();
}int main() {outputToFile("hello","momo\nmomo\nmo",ios::out);
}
二、读文件

(1) 流程

  1. 包含头文件:<fstream>
  2. 创建输入流对象:ifstream ifs;
  3. 输入流对象调用open方法打开文件:ifs.open("文件路径", 打开方式)
  4. 四种读取数据的方式 (详见测试代码)
  5. 关闭流:ifs.close();

(2) 测试

#include <fstream>
#include<iostream>
#include<string>using namespace std;string readFile(string file, int mode) {ifstream ifs;ifs.open(file, mode);string s;if (!ifs.is_open()) {cout << "文件打开失败" << endl;return nullptr;}//    第一种方法
//    char buf[1024] = {0};
//    while (ifs >> buf) {//        s.append(buf);
//    }//    第二种方法:每次读取一行数据到buf中
//    char buf[1024] = {0};
//    while (ifs.getline(buf,sizeof(buf))) {//        s.append(buf);
//        s.append("\n");
//    }//    第三种方法:每次读取一行数据到buf中
//    string buf;
//    while (getline(ifs,buf)) {//        s.append(buf + "\n");
//    }//    第四种方法:每次读取一个字符到c中
//    char c;
//    EOF   end of file
//    while ((c = ifs.get()) != EOF) {//        s.push_back(c);
//    }ifs.close();return s;
}int main() {cout << readFile("hello",ios::in) << endl;
}
三、关于文件的打开方式
打开方式 说明
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 写入的初始位置为文件尾
ios::app 以追加方式写入文件
ios::trunc 如果文件存在则删除后重新创建
ios::binary 二进制方式

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

二进制文件的读写操作

流程基本和上面一样,下面只展示测试代码

一、写文件
#include<iostream>
#include<string>
#include <fstream>
using namespace std;class Person {public:int age;char* name;Person(int age, char* name){this->age = age;this->name = name;}
};int main() {ofstream ofs("Person.txt",ios::out | ios::binary);Person p (11,"张三");ofs.write((const char*) &p, sizeof(Person));ofs.close();
}
二、读文件
#include<iostream>
#include<string>
#include <fstream>using namespace std;class Person {public:int age;char *name;Person(int age, char *name) {this->age = age;this->name = name;}Person() {}
};int main() {ifstream ifs;ifs.open("Person.txt", ios::in | ios::binary);if (!ifs.is_open()) {cout << "文件打开失败" << endl;return 0;}Person p;ifs.read((char*) &p, sizeof(Person));cout << "姓名:" << p.name << "\n" << "年龄:" << p.age << endl;ifs.close();
}

C++基础 ----- 文件操作相关推荐

  1. Python基础-文件操作

    Python基础-文件操作 1.文件的打开和关闭 # 1.打开文件 # 默认r模式 只读 文件不存在,报错 # f = open('a.txt')# w模式 写权限 # 如果文件不存在,就会创建文件 ...

  2. logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  3. python 相对路径报错_小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  4. Python基础--文件操作

    文件操作通常用来存储程序结果,以便下次可以直接使用,不必要重新运行一遍.文件操作最基本的三步:1.打开文件或者新建文件  2. 读或者写  3 关闭文件流保存数据. Python 访问模式如下: 打开 ...

  5. python基础-文件操作(10)

    一.什么是文件 等等这些都叫做文件,各种格式的.但不仅仅限制于这些. 二.文件的作用 大家应该听说过一句话:"好记性不如烂笔头". 不仅人的大脑会遗忘事情,计算机也会如此,比如一个 ...

  6. WEB安全基础-文件操作漏洞

    文件操作漏洞 常见文件操作: 文件上传 上传头像: 上传附件: 文件下载 下载应用: 下载附件: 文件上传 上传Webshell 上传木马 文件下载 下载系统任意文件 下载程序代码 常见文件操作漏洞: ...

  7. 15_python基础—文件操作

    文章目录 目标 一.文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式(二进制) 1.3 文本文件和二进制文件 二.文件的基本操作 2.1 文件操作步骤 2.2 操作文件的函数/方法 2.2 ...

  8. python 基础文件操作

    实时刷新到硬盘里 f= open('hh','w',encoding='utf8') f.write('gyftyftft') f.write('hghgh\njkkjk') f.flush()#实时 ...

  9. 第三章 Python基础——文件操作函数

    3.1三元运算 三元运算又称三目运算,是对简单条件的简写 if 条件成立:val=1 else:val=2 改成三元运算: val=1 if条件成立 else 2 3.2字符编码转换 编码的种类情况: ...

最新文章

  1. SpringCloud 教程 | 第二篇: 服务消费者(rest+ribbon)
  2. php和python区别-php与python的区别
  3. malloc函数具体解释
  4. python 调试命令
  5. C语言十六进制数转八进制(十进制作为中介)(附完整源码)
  6. 100流明相当于多少w_1990年的100元,相当于2020年的多少钱?
  7. 墨刀原型制作 位置选择_原型制作不再是可选的
  8. 大数据时代下,App数据隐私安全你真的了解么?
  9. fastai学习:02_production Questionnaire
  10. 苹果挥刀,iPhone 12 mini要换处理器了,无缘A14!
  11. php socket发数据打印,PHP向socket服务器收发数据的方法
  12. OpenCV最简JAVA版范例
  13. C# MysqlHelper 执行reader时,遇到致命错误或者超时
  14. Win10磁盘的分区与合并傻瓜教程
  15. 腾讯地图点聚合开发-实现地图找房功能
  16. java 繁体转简体_java 中文繁简体转换工具 opencc4j
  17. 山西大同大学计算机考试打印准考证
  18. 塞拉利昂首次秘密进行基于区块链的总统选举
  19. 天池比赛首次参加记录
  20. php户型图识别,五大指标教你看懂户型图

热门文章

  1. 数字特征:矩 协方差矩阵
  2. linux 修改普通用户的 max user process
  3. python(7)– 类的反射
  4. arpspoof渗透工具使用方法详解+实战
  5. SuseLinux详解(2)——网络设置静态IP 网关 DNS的方法
  6. jQuery form表单的serialize()参数和其他参数 如何一起传给后端
  7. 设计模式17_命令模式
  8. 这个工具太好用了,彻底摆脱了数据IT“天天取数”的噩梦
  9. 数据中台不是企业的万能妙药
  10. 音乐计算机官方.,Boom音乐电脑版