c++学习笔记(五):文件操作
文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
c++中对文件操作需要包含头文件
文件类型分为两种:
- 文本文件 - 文件以文本的ASCII码形式存储在计算机中
- 二进制文件 - 文件以文本的二进制形式存储在计算机中
操作文件的三大类:
- ofstream:写操作
- ifstream:读操作
- fstream:读写操作
文本文件
写文件
写文件步骤如下:
包含头文件
include
创建流对象
ofstream ofs;
打开文件
ofs.open("文件路径", 打开方式);
写数据
ofs << "写入的数据";
关闭文件
ofs.close();
文件打开方式:
| 打开方式 | 解释 |
|---|---|
| ios::in | 为读文件而打开文件 |
| ios::out | 为写文件而打开文件 |
| ios::ate | 初始位置:文件尾 |
| ios::app | 追加方式写文件 |
| ios::trunc | 如果文件存在,先删除再创建 |
| ios::binary | 二进制方式 |
注意:文件打开方式可以配合使用,利用 | 操作符
例如:用二进制方式写文件 ios::binary | ios::out
void test01()
{
//写数据
ofstream ofs;
ofs.open("test.txt", ios::out);
ofs << "name: little john" << endl;
ofs << "gender: male" << endl;
ofs << "age: 18" << endl;
ofs.close();
}
读文件
写文件步骤如下:
包含头文件
include
创建流对象
ifstream ifs;
打开文件并判断文件是否打开成功
ifs.open("文件路径", 打开方式);
读数据
四种方式读取
关闭文件
ifs.close();
void test01()
{
ifstream ifs;
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) cout << "file open false" << endl;
else cout << "file open success" << endl;
//读数据
//1.
char buf1[1024] = {0};
while ( ifs >> buf1 )
{
cout << buf1 << endl;
}
//2.
char buf2[1024] = {0};
while (ifs.getline(buf2,sizeof(buf2)))
{
cout << buf2 << endl;
}
//3.
string buf3;
while (getline(ifs, buf3))
{
cout << buf3 << endl;
}
//4.
char c;
while ((c = ifs.get()) != EOF)
{
cout << c;
}
ifs.close();
}
二进制文件
以二进制的方式对文件进行读写操作
打开方式要指定为ios::binary
写文件
二进制文件写文件主要利用流对象调用成员函数write
函数原型:ostream& write(const char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
//二进制文件 写文件
class Person
{
public:
char m_Name[64];
int m_Age;
};
void test01()
{
ofstream ofs("person.txt", ios::out | ios::binary);
Person p = {"John", 18};
ofs.write((const char *)&p, sizeof(Person) );
ofs.close();
}
读文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
void test02()
{
ifstream ifs("person.txt", ios::in | ios::binary);
if (!ifs.is_open()) cout<<"false"<<endl;
Person p;
ifs.read((char *)&p, sizeof(Person));
cout<<"name:" <<p.m_Name<<" age:"<<p.m_Age<<endl;
ifs.close();
}
c++学习笔记(五):文件操作的更多相关文章
- python学习笔记(五)-文件操作2
一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...
- node 学习笔记 - fs 文件操作
本文同步自我的个人博客:http://www.52cik.com/2015/12/03/learn-node-fs.html 最近看到群里不少大神都开始玩 node 了,我感觉跟他们步伐越来越大了, ...
- python的学习笔记01_5文件操作
一,文件操作基本流程. 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...
- node学习笔记3——文件操作fs
文件操作关键字: http('fs') —— 请求 node 里面的 http 模块 readFile —— 读文件,参数包括 文件名,回调函数 writeFile —— 写文件,参数包括 文件 ...
- python学习笔记(三):文件操作和集合
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...
- python学习笔记:文件操作和集合
一.文件操作 文件读写步骤:有一个文件,打开文件,操作文件读写文件,关闭文件. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例) 模式 可做操作 若文件不存在 是否覆盖 r ...
- Java 学习笔记(14)—— 文件操作
java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- python学习笔记三 文件操作(基础篇)
文件操作 打开文件 open(name[,mode[,buffering]]) open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉] w ...
随机推荐
- 【Python】基于动态规划和K聚类的彩色图片压缩算法
引言 当想要压缩一张彩色图像时,彩色图像通常由数百万个颜色值组成,每个颜色值都由红.绿.蓝三个分量组成.因此,如果我们直接对图像的每个像素进行编码,会导致非常大的数据量.为了减少数据量,我们可以尝试减 ...
- Babel 7 初探
Babel有两大功能,转译和polyfill.转译就是把新的JS的语法,转化成旧的JS的语法.polyfill则是针对JS中新增的一些对象(Map, Set)和实例方法,这些对象和方法,在旧的浏览器中 ...
- mysql 临时表的好处
客户端新建了一个会话,这个会话只是服务器与客户端1对1的关系,客户端可能在服务端建立一个临时表,满足客户端处理某些事务的需求,当客户端退出会话后,这个临时表自动drop,没有任何数据信息占用数据库空间 ...
- CSS+JS 实现动态曲线进度条
由于系统UI风格升级,产品童鞋和UI童鞋总是想要搞点儿事情出来,项目页面上的进度条从直线变成了曲线,哈哈,好吧,那就迎难而上 实现效果: 1.简单搞一搞 CSS , 此处代码有折叠 .process ...
- [oeasy]python0082_VT100_演化_颜色设置_VT选项_基础色_高亮色_索引色_RGB总结
更多颜色 回忆上次内容 上次 了解了控制序列 背后的故事 一切标准 都是 从无到有 的 就连 负责标准的组织 也是 从无到有 的 VT-05 奠定了 基础颜色 黑底 绿字 隔行 扫描 但 多颜色设置 ...
- oeasy教您玩转vim - 60- # vim选项
vim选项 从头开始 这次我们从头开始 从进入vim之前开始 我们可以在终端里面给vim怎么样的参数呢? man vim 这个如果不行的话 要先运行unminimize更新manual 也可以在v ...
- Week 0
Day 0 我8:00与lsh前往济南,在大约11:40左右抵达济南高铁站. 等高铁期间,我在庞大的济南高铁站中找到了我心心念念的而DY却没有的赛百味三明治,买了27的西式火腿三明治和34的香烤牛肉三 ...
- iOS开发基础136-防暴力点击
要在Objective-C中创建一个高度可复用的工具类,以防止按钮的暴力点击,并且使用切面编程(AOP)的方式,我们可以考虑使用Aspects这个库来实现方法的拦截.以下是具体的实现步骤: 第一步:引 ...
- 安卓开发 StateListDrawable 应用
基础部份 StateListDrawable 安卓开发中,如果要做一个按扭按下改变背景,或获取焦点改变背景,最简单的方法是利用将背景指向一个资源,然后果在资源中配置事件,总共分为三步, 1) ...
- 云计算:基于Redis的文章投票系统(Python完整版)
| Redis的安装不懂的可前往 https://www.zeker.top/posts/9d3a5b2a/ 网上搜到的代码很多,但大多都有点小毛病(方法不可用,逻辑错误等) 自己基于网上找到的代码进 ...