原文地址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++入门到理解之文件操作(文本文件的读写+二进制文件的读写)的更多相关文章

  1. YTU 2925: 文件操作--文本文件读入

    2925: 文件操作--文本文件读入 时间限制: 1 Sec  内存限制: 128 MB 提交: 38  解决: 16 题目描述 现有100名学生的姓名(name).学号(num).英语(Englis ...

  2. 06 . Python3入门之IO编程(文件操作)

    IO编程简介 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 ...

  3. Unix/Linux环境C编程入门教程(40) 初识文件操作

     1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include<unistd.h> 定义函数 int ...

  4. python入门之排序,文件操作

    排序 li.sort() 对li列表从小到大排序,直接更新li列表 sorted(li) 返回一个li排序后的列表,并非直接对li作更新 列表元素必须是同一种数据类型 文件操作 打开文件: f = o ...

  5. python-基础入门-3(对文件操作)

    打开文件用open()函数 open(filename)默认为读取模式 等价于open(filename,'r') 1 txt=open(filename) 2 print txt.read() 3 ...

  6. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  7. C#中的文件操作1

    1. 文件操作常用相关类 a)File             //操作文件,静态类,对文件整体操作.拷贝.删除.剪切等. b)Directory       //操作目录(文件夹),静态类 c)Di ...

  8. python学习 day07打卡 文件操作

    本节主要内容: 初识文件操作 只读(r,rb) 只读(w,wb) 追加(a,ab) r+读写 w+写读 a+追加写读 其他操作方法 文件的修改以及另一种打开文件句柄的方法 一. 初识文件操作 使用py ...

  9. 第九天- 文件操作 r w a 文件复制/修改

    文件操作简介:使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作也会 ...

随机推荐

  1. java动态编译运行代码

    import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URI;import java.util. ...

  2. python之encode和decode编码

    u = '中文' str3 = u.encode('utf-8') # 以utf-8编码对u进行编码,获得bytes类型对象 print(str3) u2 = str3.decode('utf-8') ...

  3. getX,getY,getScrollX,getScrollY,ScrollTo(),ScrollBy()辨析

    前言:前两天看了自定义控件,其中有一些东西我觉得有必要深入理解一下 以下图为例: getX(),getY()返回的是触摸点A相对于view的位置 getRaw(),getRawY()返回的是触摸点B相 ...

  4. android开发检测用户是否使用了虚拟定位

    在应用开发中,如果有签到打卡之类的功能,你是否会遇到检测用户是否使用了虚拟定位软件来进行打卡?如果有,那么请仔细阅读这篇文章.该文章会带你认识什么是虚拟定位.什么是应用分身,以及如何通过代码来检测用户 ...

  5. 常用数据结构之ArrayList

    前言 ArrayList想必是广大Java程序员开发时最常用的数据结构了,但不一定对其原理都有了解,今天我将结合ArrayList的源码对其进行讲解.本文将围绕ArrayList主要特性(包括适用场景 ...

  6. leetcode菜鸡斗智斗勇系列(3)--- Jewels and Stones珠宝和钻石

    1.原题: https://leetcode.com/problems/jewels-and-stones/ You're given strings J representing the types ...

  7. 【重学Node.js 第5篇】部署项目到腾讯云服务器

    课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...

  8. GitHub Actions 工作流

    今天打开github上面的 项目 突然 一个github actions 的提示, 进去后显示: 由于项目是Maven 创建的 选择Maven 进入:  初步看到代码:  大概意思就是 我们push ...

  9. Jmeter 查看结果树之界面功能介绍 [8]

    查看结果树显示所有请求响应的树,通过它可以查看任何请求的响应.除了显示响应之外,还可以查看获取响应所花费的时间以及一些响应代码.需要通过"查看结果树"来查看服务器处理请求之后的返回 ...

  10. 物联网架构_对AWS的Greengrass的认识与理解

    物联网架构_对AWS的Greengrass的认识与理解 一,前言: 这段时间有许多的收获,分析,还有总结,其中包括新系统的设计与开发,以及其中新技术的踩坑等等等. 但是最近真的很忙,项目的推进,面试工 ...