C++核心编程(四)--文件操作
5 文件操作
程序运行时产生的数据都属于临时数据,程序一点运行结束,就会被释放
通过文件可以将数据持久化
C++中对文件操作需要包含头文件:fstream
文件类型分为两种:
- 文本文件:文件以文本的ASCII码形式存储在计算机中
- 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们
操作文件的三大类
ofstream
写操作ifstream
读操作fstream
读写操作
5.1 文本文件
5.1.1 写文件
写文件步骤如下:
- 包含头文件
#include <fstream>
- 创建流对象
ofstream ofs;
- 打开文件
fos.open("file_path", open_type);
- 写数据
ofs << "写入的数据";
- 关闭文件
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 读文件
读文件和写文件步骤相似,但是读取的方式比较多
读文件步骤如下:
- 包含头文件
#include <fstream>
- 创建流对象
ifstream ifs
- 打开文件并判断文件是否打开成功
fis.open("文件路径“, 打开方式);
- 读数据
四种方式读取
- 关闭文件
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++核心编程(四)--文件操作相关推荐
- 【黑马程序员 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:// ...
- C++核心编程(11)--文件操作
目录 11 文件操作 11.1文本文件 11.1.1写文件 11.1.2读文件 11.2 二进制文件 11.2.1 写文件 11.2.2 读文件 11 文件操作 程序运行时产生的数据都属于临时数据,程 ...
- 【Java 编程】文件操作,文件内容的读写—数据流
一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...
- mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作
一次性进群,长期免费索取教程,没有付费教程. 教程列表见微信公众号底部菜单 进微信群回复公众号:微信群:QQ群:460500587 微信公众号:计算机与网络安全 ID:Computer-network ...
- Linux C/C++编程: 文件操作open/close、fopen与freopen/fclose
open是linux下的底层系统调用函数,fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. linxu下的fopen是open的封装函数,fopen最终还是要调用底层的系 ...
- 该文件可能是只读的 或者您要访问的位置_Linux应用编程之文件操作 系统调用篇(下)...
关注.星标公众号,直达精彩内容 ID:嵌入式情报局 作者:情报小哥 1文件操作实战 上篇文章跟大家介绍了Linux系统调用的文件操作API函数,其实跟C语言中的文件读取操作差不多,所以今天小哥就利用那 ...
- Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)
Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...
- Python编程之文件操作
1. 基本数据结构 1.1. bytes和bytearray bytes是一个数据结构类,是描述字节流序列对象,内存分配是连续的,是不可变类型. bytearray是一个数据结构类,是描述字节流序列对 ...
- python学习笔记Day4 面向对象编程,文件操作,os模块,代码调试
一.traceback模块 错误日志可能用到 import tracebackwhile 1: # 捕获异常的顺序按照先父类后子类try:n1 = int(input('请输入一个被除数'))n2 = ...
- Linux系统编程 | 01 -文件操作
一.文件操作方法 linux中有两种方法可以操作文件:系统调用和c库函数. 1. 什么是系统调用? 由操作系统实现并提供给外部应用程序的编程接口(API),是应用程序同系统之间数据交互的桥梁. C标准 ...
最新文章
- 2013年中国高校网购实力排行榜
- python小练习之一
- 判断一个数是否是2的幂
- 20135302魏静静——linux课程第六周实验及总结
- 网络工程师必须懂的十五大专业术语!
- Mybatis中的updateByPrimaryKeySelective()和updateByPrimaryKey()
- Git---命令行语法
- 小规模团队如何“微服务”管理
- Python 绘图字体控制 + 文字在图片中的位置调整
- 【Python】实现isPrime()函数判断质数+异常处理
- Opencv之threshold
- 二维码在线制作免费快速
- idea clean Process terminated
- 案例介绍 犹他州交通规划网络地图中心
- 腾讯云折(tian)腾(keng)记
- 【pwnable.kr】 passcode
- FXO端口的断开呼叫的问题(转)
- 第九课 Java基础篇——面向对象(综合案例)
- 激光式气体传感器的检测原理及优势
- 搭建git服务器及利用git hook自动布署代码