C++核心编程(11)--文件操作
目录
11 文件操作
11.1文本文件
11.1.1写文件
11.1.2读文件
11.2 二进制文件
11.2.1 写文件
11.2.2 读文件
11 文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
C++中对文件操作需要包含头文件 < fstream >
文件类型分为两种:
文本文件 - 文件以文本的ASCII码形式存储在计算机中
二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们
操作文件的三大类:
ofstream:写操作
ifstream: 读操作
fstream : 读写操作
11.1文本文件
11.1.1写文件
写文件步骤如下:
包含头文件
#include <fstream>
创建流对象
ofstream ofs;
打开文件
ofs.open("文件路径",打开方式);
写数据
ofs << "写入的数据";
关闭文件
ofs.close();
文件打开方式:
打开方式 | 解释 |
---|---|
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在先删除,再创建 |
ios::binary | 二进制方式 |
注意: 文件打开方式可以配合使用,利用|操作符
例如:用二进制方式写文件 ios::binary | ios:: out
示例:
#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
读文件可以利用 ofstream ,或者fstream类
打开文件时候需要指定操作文件的路径,以及打开方式
利用<<可以向文件中写数据
操作完毕,要关闭文件
11.1.2读文件
读文件与写文件步骤相似,但是读取方式相对于比较多
读文件步骤如下:
包含头文件
#include <fstream>
创建流对象
ifstream ifs;
打开文件并判断文件是否打开成功
ifs.open("文件路径",打开方式);
读数据
四种方式读取
关闭文件
ifs.close();
示例:
#include <fstream>
#include <string>
void test01()
{ifstream ifs;ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//第一种方式//char buf[1024] = { 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){cout << c;}ifs.close();
}int main() {test01();system("pause");return 0;
}
总结:
读文件可以利用 ifstream ,或者fstream类
利用is_open函数可以判断文件是否打开成功
close 关闭文件
11.2 二进制文件
以二进制的方式对文件进行读写操作
打开方式要指定为 ios::binary
11.2.1 写文件
二进制方式写文件主要利用流对象调用成员函数write
函数原型 :ostream& write(const char * buffer,int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
示例:
#include <fstream>
#include <string>class Person
{
public:char m_Name[64];int m_Age;
};//二进制文件 写文件
void test01()
{//1、包含头文件//2、创建输出流对象ofstream ofs("person.txt", ios::out | ios::binary);//3、打开文件//ofs.open("person.txt", ios::out | ios::binary);Person p = {"张三" , 18};//4、写文件ofs.write((const char *)&p, sizeof(p));//5、关闭文件ofs.close();
}int main() {test01();system("pause");return 0;
}
总结:
文件输出流对象 可以通过write函数,以二进制方式写数据
11.2.2 读文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char *buffer,int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
示例:
#include <fstream>
#include <string>class Person
{
public:char m_Name[64];int m_Age;
};void test01()
{ifstream ifs("person.txt", ios::in | ios::binary);if (!ifs.is_open()){cout << "文件打开失败" << endl;}Person p;ifs.read((char *)&p, sizeof(p));cout << "姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
}int main() {test01();system("pause");return 0;
}
文件输入流对象 可以通过read函数,以二进制方式读数据
C++核心编程(11)--文件操作相关推荐
- 【黑马程序员 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:// ...
- mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作
一次性进群,长期免费索取教程,没有付费教程. 教程列表见微信公众号底部菜单 进微信群回复公众号:微信群:QQ群:460500587 微信公众号:计算机与网络安全 ID:Computer-network ...
- 【Java 编程】文件操作,文件内容的读写—数据流
一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...
- Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)
Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...
- 11. 文件操作与模块
目录 一.文件操作 (一)文件打开和关闭 (二)文件读写 文件打开模式:w w+ wb+ (二进制格式打开文件) [写文件] 文件打开模式:r r+(只读) rb rb+(二进制格式 ...
- 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语言中的文件读取操作差不多,所以今天小哥就利用那 ...
- Python编程之文件操作
1. 基本数据结构 1.1. bytes和bytearray bytes是一个数据结构类,是描述字节流序列对象,内存分配是连续的,是不可变类型. bytearray是一个数据结构类,是描述字节流序列对 ...
- Linux系统编程 | 01 -文件操作
一.文件操作方法 linux中有两种方法可以操作文件:系统调用和c库函数. 1. 什么是系统调用? 由操作系统实现并提供给外部应用程序的编程接口(API),是应用程序同系统之间数据交互的桥梁. C标准 ...
最新文章
- Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战
- 谁说LINQ复杂查询不支持返回实名类型~复杂结果集中再使用复杂结果集
- 框架下cookie的使用_为什么自动化运维系统越来越多使用都RESTful API?
- python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法
- MFC让窗口最前端显示
- android:layout_marginbottom=,Android: Retrieve layout_marginBottom programmatically?
- Sql Server 中利用游标对table 的数据进行分组统计式输出…
- Linux全攻略--Apache服务器配置与管理(三)
- android9 添加开机音乐
- 2021-泛微OA V8 SQL注入漏洞
- LTM(Lifelong Topic Modeling)介绍
- 力扣刷题 DAY_83 贪心
- video标签 或 微软云 azure-media-player 禁止在iphone safari中默认全屏播放
- 6-4 学生成绩链表处理(20 分)
- Android自定义SurfaceView简单实现烟花效果
- rk3399 rv1126上使用wk2124
- 我的程序员之路:11 年高考结束到 17 年日本修士的心路历程
- 3Dcnn 降假阳性模型调试(七)
- 【GNN】VGAE:利用变分自编码器完成图重构
- 母婴商城网站的可行性分析报告
热门文章
- 园艺应用的计算机知识,第一章 计算机在农业上的应用 绪论 ppt课件.ppt
- 计算机中有符号的机器数,机器数
- 使用移远BC28模块遇到的问题
- 如何在Windows 10上打开RAW图像文件
- lnmp mysql my.cnf_LNMP环境搭建-mysql
- 网络热评的牛年最红护肤品
- “0xc000007b无法正常启动”我的解决方案
- A4黑白打印多少钱一张
- 【无限互联】mac系统读写NTFS
- 精确版NEIE全新版视听说3(网络版)答案{试听说3答案}