C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)
原文地址http://www.javayihao.top/detail/168
一:概述
1.程序在运行中产生的数据都是临时数据,程序一旦运行结束会被释放,可以通过文件相关的操作将数据持久保存。
2.文件类型有文本文件(文件以文本的ASCLL码形式存储在计算机中)和二进制文件(文件以文本的二进制形式存储在计算机中,用户一般直接读不懂他们)。
3.C++中对文件操作需要包含头文件<fstream>,涉及到的三大文件操作类:ofstream写操作类;ifstream读操作类;fstream读写操作类。
二:文本文件读写操作
写文件
第1步:包含头文件#include<fstream>
第2步:创建流对象ofstream ofs
第3步:打开文件ofs.open("文件路径",打开方式)
第4步:写文件ofs<<"写入数据"
第5步:关闭文件ofs.close()
注意:
1.文件的打开方式

2.打开方式可以通过|操作符配合使用,如打开二进制写文件 ios::binary|ios:out
3.创建流对象ofstream也可以选择fstream读写类
案例代码
#include <iostream>
using namespace std;
//第1步
#include <fstream>
int main() {
//第2步
ofstream ofs;
//第3步 当前同级目录生成test文件
ofs.open("test.txt",ios::app);
//第4步
ofs << "helloword";
//第5步
ofs.close();
}
读文件
第1步:包含头文件#include<fstream>
第2步:创建流对象ifstream ifs
第3步:打开文件ifs.open("文件路径",打开方式)判断是否打开成功,打开方式和上面写文件一样
第4步:读数据
第5步:关闭文件ifs.close()
案例代码
#include <iostream>
using namespace std;
//第1步
#include <fstream>
void test() {
//第2步
ifstream ifs;
//第3步
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) {
cout << "文件打开失败";
return;
}
//第4步
char buf[1024] = { 0 };//字符数组初始化为0
while (ifs >> buf) {//循环全部读完
cout << buf << endl;
}
//第5步
ifs.close();
}
int main() {
test();
}
注意:第4步读数据方式有四种。其他三种如下
//第二种
char buf[1024] = { 0 };
while (ifs.getline(buf,sizeof(buf))){//一行一行读取
cout << buf << endl;
}
//第三种
#include <iostream>
#include <string>
using namespace std;
//第1步
#include <fstream>
void test() {
//第2步
ifstream ifs;
//第3步
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) {
cout << "文件打开失败";
return;
}
//第4步
string buf;
while (getline(ifs,buf)){//使用string中的全局函数getline一行行读取,需要导入string头文件
cout << buf << endl;
}
//第5步
ifs.close();
}
int main() {
test();
}
//第四种
#include <iostream>
using namespace std;
//第1步
#include <fstream>
void test() {
//第2步
ifstream ifs;
//第3步
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) {
cout << "文件打开失败";
return;
}
//第4步
char c;
while ((c=ifs.get())!=EOF){//一个一个字符读取、效率不高
cout << c;
}
//第5步
ifs.close();
}
int main() {
test();
}
三:二进制文件读写操作
1.二进制方式对文件操作,打开方式指定为ios::binary,二进制文件不仅可以对内置数据类型的数据操作,还可以对对象类型操作。
2.写入的二进制文件出现乱码不用处理,只要读到的正确即可
写文件
#include <iostream>
using namespace std;
//第1步 头文件
#include <fstream>
class person {
public:
char name[54];//涉及到字符串读写,不要使用c++的string,而是用c的char
int age;
};
void test() {
//第2步 流对象
ofstream ofs;
//第3步 打开文件
ofs.open("test.txt", ios::out|ios::binary);
//第4步写文件
person p = { "李四",12 };
ofs.write((const char *)&p,sizeof(p));
//第5步关闭
ofs.close();
}
int main() {
test();
}
读文件
#include <iostream>
using namespace std;
//第1步
#include <fstream>
class person {
public:
char name[54];
int age;
};
void test() {
//第2步
ifstream ifs;
//第3步
ifs.open("test.txt", ios::in|ios::binary);
if (!ifs.is_open()) {
cout << "文件读取失败";
return;
}
//第4步
person p ;
ifs.read((char *)&p,sizeof(p));
cout << p.name << p.age;
//第5步
ifs.close();
}
int main() {
test();
}

C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)的更多相关文章
- YTU 2925: 文件操作--文本文件读入
2925: 文件操作--文本文件读入 时间限制: 1 Sec 内存限制: 128 MB 提交: 38 解决: 16 题目描述 现有100名学生的姓名(name).学号(num).英语(Englis ...
- 06 . Python3入门之IO编程(文件操作)
IO编程简介 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 ...
- Unix/Linux环境C编程入门教程(40) 初识文件操作
1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include<unistd.h> 定义函数 int ...
- python入门之排序,文件操作
排序 li.sort() 对li列表从小到大排序,直接更新li列表 sorted(li) 返回一个li排序后的列表,并非直接对li作更新 列表元素必须是同一种数据类型 文件操作 打开文件: f = o ...
- python-基础入门-3(对文件操作)
打开文件用open()函数 open(filename)默认为读取模式 等价于open(filename,'r') 1 txt=open(filename) 2 print txt.read() 3 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- C#中的文件操作1
1. 文件操作常用相关类 a)File //操作文件,静态类,对文件整体操作.拷贝.删除.剪切等. b)Directory //操作目录(文件夹),静态类 c)Di ...
- python学习 day07打卡 文件操作
本节主要内容: 初识文件操作 只读(r,rb) 只读(w,wb) 追加(a,ab) r+读写 w+写读 a+追加写读 其他操作方法 文件的修改以及另一种打开文件句柄的方法 一. 初识文件操作 使用py ...
- 第九天- 文件操作 r w a 文件复制/修改
文件操作简介:使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作也会 ...
随机推荐
- UWP 使用SSL证书,保证数据安全
事情是这样的,我们后端的小伙伴升级了用户会员系统,使用了全新的GraphQL登录机制,并且采用SSL加密的方式来实现阻止陌生客户端请求的案例. GraphQL在UWP端的实现,以后有时间会单独写一篇文 ...
- 《Dotnet9》系列-开源C# WPF控件库1《MaterialDesignInXAML》强力推荐
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- 如何编写一个TS程序?
第一步:我们首先需要个代码编辑器-VSCode 点击此处下载(你会下载到rar文件) 第二步:我们还需要下载NodeJS,因为这里有npm,npm是包管理工具,可以下载TypeScript. 注意: ...
- 61-如何使用 Weave 网络?
weave 是 Weaveworks 开发的容器网络解决方案.weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来.对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交 ...
- oop面向对象【类与对象、封装、构造方法】
今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...
- android6.0系统Healthd深入分析
概述 Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework层的BatteryService用以计算电池电量相关状态信 ...
- Java并发的若干基本陷阱、原理及解决方案
勿止于结论:持续探索与求证. 概述 为什么要使用并发 ? 有三点足够信服的理由: 性能提升.单核 CPU 的性能基本抵达瓶颈,充分挖掘多核 CPU 的能力,使得性能提升变成水平可扩展的. 事件本质.世 ...
- UWP GridView切换数据时界面闪动
在选择数据时,比如1-10集,和11-20集切换时,GridView需要切换对应的数据,但是会发生界面闪动. 这是默认的Item Transition导致的. 可以去掉默认的转换效果. <Gri ...
- 洛谷P5364 [SNOI2017]礼物 题解
传送门 /* 热情好客的小猴子请森林中的朋友们吃饭,他的朋友被编号为 1∼N,每个到来的朋友都会带给他一些礼物:大香蕉.其中,第一个朋友会带给他 11 个大香蕉,之后,每一个朋友到来以后,都会带给他之 ...
- Oracle - exp实战
一.概述 exp/imp是oracle中的一个逻辑导出和导入工具,假想一个场景,当我们使用exp命令在对用户进行导出的时候,如果该用户中的某些表的数据有修改,或表结构进行了修改,或者表被删除,那么我们 ...