第一百零八天学习记录:C++基础:文件操作

C++中对文件操作需要包含头文件<fstream>

操作文件的三大类:
1、ofstream:写擦破自评
2、ifstream:读操作
3、fstream:读写操作

文本文件

写文件

写文件步骤如下:
1、包含头文件

#include <fstream>

2、创建流对象
ofstream ofs;
3、打开文件
ofs.open(“文件路径”,打开方式);
4、写数据
ofs<<“写入的数据”
5、关闭文件
ofs.close();

文件打开方式:

在这里插入图片描述
截图来自黑马程序员教学

注意:文件打开方式可以配合使用,利用|操作符
例如:用二进制方式写文件:

ios::binary | ios::out
using namespace std;
#include <fstream>void test01()
{//1、包含头文件 fstream//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;
}

总结

1、文件操作必须包含头文件fstream
2、读文件可以利用ofstream,或者fstream类
3、打开文件时候需要指定操作文件的路径,以及打开方式
4、利用<<可以向文件中写数据
5、操作完毕,要关闭文件

读文件

读文件步骤如下:
1、包含头文件

#include <fstream>

2、创建流对象
ifstream ifs;
3、打开文件并判断文件是否打开成功
ifs.open(“文件路径”,打开方式);
4、读数据
四种方式读取
5、关闭文件
ifs.close();

using namespace std;
#include <iostream>
#include <fstream>
#include <string>void test01()
{//1、包含头文件 fstream//2、创建流对象ifstream ifs;//3、打开文件并判断文件是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据//第一种//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)//EOF end of file//{//	cout << c;//}//5、关闭文件ifs.close();
}

总结:

1、读文件可以利用ifstream,或者fstream类
2、利用is_open函数可以判断文件是否打开成功
3、close关闭文件

二进制文件

打开方式要指定为ios::binary

写文件

二进制方式写文件主要利用流对象调用成员函数write
函数原型:ostream& write(const char* buffer,int len);
参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数

using namespace std;
#include <fstream>
#include <iostream>//二进制文件   写文件
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);//4、写文件Person p = { "赵四",18 };ofs.write((const char*)&p,sizeof(Person));//5、关闭文件ofs.close();
}int main()
{test01();return 0;
}

总结:文件输出流对象,可以通过write函数,以二进制方式写数据

读文件

二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char* buffer,int len);
参数解释:字符指针内存中一段存储空间。len是读写的字节数

#include <iostream>
using namespace std;
#include <fstream>//二进制文件   读文件
class Person
{
public:char m_Name[64];int m_Age;
};void test01()
{//1、包含头文件//2、创建流对象ifstream ifs;//3、打开文件 判断文件是否打开成功ifs.open("person.txt", ios::in | ios::binary);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读文件Person p;ifs.read((char*)&p, sizeof(Person));//5、关闭文件ifs.close();cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
}int main()
{test01();return 0;
}

总结:文件输入流对象 可以通过read函数,以二进制方式读取数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28386.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP四次挥手过程

TCP 断开连接是通过四次挥手方式。 双方都可以主动断开连接&#xff0c;断开连接后主机中的「资源」将被释放&#xff0c; 刚开始双方都处于 establised 状态&#xff0c;假如是客户端先发起关闭请求&#xff0c;过程如下图&#xff1a; 第一次挥手&#xff1a;客户端打算关闭…

SpringSecurity(6.1.x版本) 认证,授权,自定义登录,内部机制探讨

SpringSecurity 文章目录 SpringSecurityCSRF跨站请求伪造攻击SFA会话固定攻击XSS跨站脚本攻击开发环境搭建认证直接认证使用数据库认证自定义验证 其他配置自定义登录界面记住我功能 授权基于角色授权基于权限授权使用注解权限判断 内部机制探究授权校验流程安全上下文安全上下…

智能电表远程抄表系统原理

智能电表远程抄表系统是现代智能电网建设的重要组成部分&#xff0c;它利用物联网技术实现电表数据的远程采集、传输和处理&#xff0c;提高了电力公司的抄表效率&#xff0c;同时也为用户提供了更加便捷、准确的用电服务。本文将从远程智能电表抄表系统的工作原理、特点、应用…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令&#xff0c;将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

配置uprof环境

AMD uprof 1/从AMD μProf | AMD处下载两个文档 2/解压 tar jxvf filename 3/将.rpm转换成deb Ubuntu的软件包格式是deb&#xff0c;如果要安装rpm的包&#xff0c;则要先用alien把rpm转换成deb。 sudo apt-get install alien #alien默认没有安装&#xff0c;所以首先要安…

SpringBoot整合SpringSecurity+JWT

SpringBoot整合SpringSecurityJWT 整合SpringSecurity步骤 编写拦截链配置类&#xff0c;规定security参数拦截登录请求的参数&#xff0c;对该用户做身份认证。通过登录验证的予以授权&#xff0c;这里根据用户对应的角色作为授权标识。 整合JWT步骤 编写JWTUtils&#xf…

修复git diff正文中文乱码

Linux git diff正文中文乱码 在命令行下输入以下命令&#xff1a; $ git config --global core.quotepath false # 显示 status 编码 $ git config --global gui.encoding utf-8 # 图形界面编码 $ git config --global i18n.commit.encoding utf-8 # …

状态模式:游戏、工作流引擎中常用的状态机是如何实现的?

从今天起&#xff0c;我们开始学习状态模式。在实际的软件开发中&#xff0c;状态模式并不是很常用&#xff0c;但是在能够用到的场景里&#xff0c;它可以发挥很大的作用。从这一点上来看&#xff0c;它有点像我们之前讲到的组合模式。 可以简短的回顾一下组合模式&#xff1a…

本地appserv外挂网址如何让外网访问?快解析端口映射

一、appserv是什么&#xff1f; AppServ 是 PHP 网页架站工具组合包&#xff0c;作者将一些网络上免费的架站资源重新包装成单一的安装程序&#xff0c;以方便初学者快速完成架站&#xff0c;AppServ 所包含的软件有&#xff1a;Apache[、Apache Monitor、PHP、MySQL、phpMyAdm…

mybatis基础

1.搭建环境 2.单参模糊查询 3.parameter语法 4.多参实战 4.1参数为对象 4.2参数为Map 4.3参数为注解标识 5.增删改 5.1增加 5.1-2 map作为参数 5.2删除 5.3修改 5.4拓展 通过非主键删除 返回值是影响的行数 拓展2 通过非主键修改

服务器数据库被360后缀勒索病毒攻击怎么解决,勒索病毒解密

随着网络攻击日益猖獗&#xff0c;数据库遭遇勒索病毒的攻击已成为常见现象。而360后缀勒索病毒是一种恶意软件&#xff0c;它将加密数据库中的文件&#xff0c;并要求受害者支付赎金才能获得解密密钥。近日&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器被360后…

C语言小项目——通讯录高阶(文件管理版)

通讯录初阶: 点这里 通讯录中阶: 点这里 文件管理版本改进之处通讯录初始化退出通讯录并保存 完整代码contact.hcontact.ctest.c 文件管理版本改进之处 通讯录初始化 contact.c 退出通讯录并保存 test.c contact.c contact.h 完整代码 contact.h #pragma once#include&l…