C++入门新手村-文件读写知识讲解

文件读写知识讲解

  • C++简单文件操作
    • 读文件
      • 读文本文件
      • 读二进制文件
    • 写文件
      • 写文本文件
      • 写二进制文件

C++简单文件操作

  • 文本文件 文件以文本的ASCII码形式存储在计算机中
  • 二进制文件 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类:

  • ofstream:写操作
  • ifstream:读操作
  • fstream:读写操作

读文件

读文件的基本步骤如下:

①包含头文件 #include <fstream>
②创建流对象 ifstream ifs;
③打开文件并判断文件是否打开成功 ifs.open("file uri",打开方式);
④读数据 四种方式读取
⑤关闭文件 ifs.close()

读文本文件

#include <iostream>
#include <fstream>
#include <string>
using namespace std;int main()
{ifstream ifs;//打开文件ifs.open("C:/Users/darryl/Desktop/test.txt", ios::in);//判断文件是否打开if (ifs.is_open()){//读取文件四种方法//第一种读取方法/*char buf[1024] = { 0 };while (ifs >> buf){std::cout << buf << std::endl;}*///第二种读取方法/*char buf[1024] = { 0 };while (ifs.getline(buf,sizeof(buf))){std::cout << buf << std::endl;}*///第三种读取方法/*string buf;while (getline(ifs,buf)){std::cout << buf << std::endl;}*///第四种读取方法char c;while ((c = ifs.get()) != EOF) //end of file 标记{std::cout << c;}}else{std::cout << "文件打开失败" << std::endl;return 0;}//关闭文件ifs.close();return 0;
}

读二进制文件

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

#include <iostream>
#include <fstream>
#include <string>
using namespace std;class Person
{
private://姓名string m_Name;//年龄int m_Age;
public:string getName(){return this->m_Name;}int getAge(){return this->m_Age;}
};int main()
{ifstream ifs;ifs.open("C:/Users/darryl/Desktop/test,txt", ios::in | ios::binary);if (!ifs.is_open()){std::cout << "文件打开失败!" << std::endl;return 0;}Person person;ifs.read((char*)&person, sizeof(Person));std::cout << "姓名:" << person.getName() << " 年龄:" << person.getAge() << std::endl;ifs.close();
}

写文件

写文件的基本步骤如下:

①包含头文件 #include <fstream>
②创建流对象 ofstream ofs;
③打开文件 ofs.open("file uri");
④写数据 ofs << "写入的数据";
⑤关闭文件 ofs.close();

文件打开方式:

  • ios::in 为读文件而打开文件
  • ios::out 为写文件而打开文件
  • ios::ate 初始位置:文件尾
  • ios::app 追加方式写文件
  • ios::trunc 如果文件存在先删除再创建
  • ios::binary 二进制方式

打开文件方式可以配合使用,利用 | 操作符:ios::binary | ios::out

写文本文件

#include <iostream>
#include <fstream>
using namespace std;int main()
{//创建流对象ofstream ofs;//指定打开访问ofs.open("C:/Users/25763/Desktop/test.txt", ios::out);//写内容ofs << "姓名 : 张三" << std::endl;//关闭文件ofs.close();
}

写二进制文件

以二进制的方式对文件进行读写操作,打开方式需要指定为:ios::binary

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

#include <iostream>
#include <fstream>
#include <string>
using namespace std;class Person
{
private://姓名string m_Name;//年龄int m_Age;
public:Person(string name, int age){this->m_Age = age;this->m_Name = name;}
};int main()
{ofstream ofs;ofs.open("C:/Users/darryl/Desktop/test,txt", ios::out | ios::binary);Person person = { "张三",12 };ofs.write((const char*)&person, sizeof(Person));ofs.close();
}

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

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

相关文章

Spring Boot 配置主从数据库实现读写分离

一、前言 现在的 Web 应用大都是读多写少。除了缓存以外还可以通过数据库 “主从复制” 架构&#xff0c;把读请求路由到从数据库节点上&#xff0c;实现读写分离&#xff0c;从而大大提高应用的吞吐量。 通常&#xff0c;我们在 Spring Boot 中只会用到一个数据源&#xff0…

http进一步认识

好久不见各位&#xff0c;今天为大家带来http协议的进一步认识 文章目录 &#x1f440;http协议的认识&#x1f440;新的改变 &#x1f440;http协议的认识 http协议经历了三个版本的演化&#xff0c;HTTP0.9是第一个版本的协议&#xff0c;它的组成极其简单&#xff0c;只涉…

硬科技企业社区“曲率引擎”品牌正式发布

“曲率引擎”&#xff0c;是科幻作品中最硬核的加速系统&#xff0c;通过改变时空的曲率&#xff0c;可实现光速飞行甚至能够超越光速。11月3日&#xff0c;“曲率引擎&#xff08;warp drive&#xff09;”作为硬科技企业社区品牌&#xff0c;在2023全球硬科技创新大会上正式对…

Oracle(12)Managing Indexes

目录 目标&#xff1a; 一、基础知识 1、Classification ofindexes 索引的分类 2、B-Tree vs Bitmap 3、Creating Indexes: Guidelines 创建索引:准则 4、Offline Index Rebuild 脱机索引重建 5、RebuildingIndexes 重建索引 6、Online Index Rebuild 在线索引重建 7…

第22期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案

目录 场景还原相关代码开发者工具 - 网络请求记录 问题排查定位改bug 总结 场景还原 我在前端使用axios接收后端xlsx表格文件流并下载&#xff0c;xlsx文件能够下载成功&#xff0c;但是打开却显示文件无法打开 相关代码 请求API封装:Content–Type以及responseType经核对均…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…

【webrtc】 对视频质量的码率控制的测试与探索

目录 环境设置 transport-cc goog-remb (webrtc中的两种码率算法&#xff09; 修改成remb算法 测试 效果 后续 可参考工程 环境设置 要到meshx上操作 telnet 112 然后执行factory_env show |grep meshx_ip 之后telnet meshx_ip 用户名admin 密码****.119 执行一下r…

Leetcode-88 合并两个有序数组

使用内置排序函数&#xff0c;时间复杂度On^2 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int j0,im;while(j<n){nums1[i]nums2[j];}Arrays.sort(nums1);} }新建一个临时数组用于放排序后的元素&#xff0c;再将临时数组赋值给nums1&…

IT运营与DevOps:有何不同?

IT 运营和 DevOps 满足许多现代企业密切相关的需求。然而&#xff0c;尽管这两种角色之间有许多相似之处&#xff0c;但也有重要的区别&#xff0c;将 IT 运营与 DevOps 混为一谈是错误的。 本文通过解释每种类型的角色是做什么的&#xff1b;它们在流程、工具和文化方面的比…

【软件STM32cubeIDE下H73xx配置串口uart1+中断接收/DMA收发+HAL库+简单数据解析-基础样例】

#【软件STM32cubeIDE下H73xx配置串口uart1中断接收/DMA收发HAL库简单数据解析-基础样例】 1、前言2、实验器件3-1、普通收发中断接收实验第一步&#xff1a;代码调试-基本配置&#xff08;1&#xff09;基本配置&#xff08;3&#xff09;时钟配置&#xff08;4&#xff09;保存…

大神接力 | YOLOv4算法超详细解析(包括诞生背景+论文解析+技术原理等)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv4论文的发表背景是在原作者声名放弃更新YOLO算法后&#xff0c;俄罗斯的Alexey大神扛起了YOLOv4的大旗&#xff0c;因此&#xff0c;其诞生背景是为了进一步提高目标检测算法的性能和精度。本篇文章就简单讲述一下YOL…

每个程序员都应该自己写一个的:socket包装类

每个程序员都应该有自己的网络类。 下面是我自己用的socket类&#xff0c;支持所有我自己常用的功能&#xff0c;支持windows和unix/linux。 目录 客户端 服务端 非阻塞 获取socket信息 完整代码 客户端 作为socket客户端&#xff0c;只需要如下几个功能&#xff1a; //…

Java 8 新特性 Stream 的使用场景(不定期更新)

方便在写代码的过程中直接使用&#xff0c;好记性不如好文章&#xff0c;直接 CV 改了直接用。提高 办&#xff08;摸&#xff09;公&#xff08;鱼&#xff09;效&#xff08;时&#xff09;率&#xff08;间&#xff09;&#xff0c; 不然就直接问 GPT 也不是说不行。 只符合…

Mysql学习文档笔记

文章目录 基础篇通用语法及分类DDL&#xff08;数据定义语言&#xff09;数据库操作注意事项 表操作 DML&#xff08;数据操作语言&#xff09;添加数据注意事项 更新和删除数据 DQL&#xff08;数据查询语言&#xff09;基础查询条件查询聚合查询&#xff08;聚合函数&#xf…

【C语法学习】18 - fread()函数

文章目录 1 函数原型2 参数3 返回值4 示例 1 函数原型 fread()&#xff1a;从与指定流stream相关联的二进制文件中读取数据块储存在str指向的内存空间中&#xff0c;函数原型如下&#xff1a; size_t fread(const void *ptr, size_t size, size_t count, FILE *stream)2 参数…

[动态规划] (七) 路径问题:LCR 166.剑指offer 47. 珠宝的最高价值

[动态规划] (七) 路径问题&#xff1a;LCR 166./剑指offer 47. 珠宝的最高价值 文章目录 [动态规划] (七) 路径问题&#xff1a;LCR 166./剑指offer 47. 珠宝的最高价值题目解析解题思路状态表示状态转移方程初始化和填表顺序 返回值代码实现总结 LCR 166. 珠宝的最高价值 题目…

python web框架 flask基础入门教程

python web框架 flask基础入门教程 今天我们写一个flask基础入门教程&#xff0c;当然也会覆盖很多重要的知识点&#xff0c;在这篇博客中&#xff0c;我们主要会讲解如下内容&#xff1a; 1、通过flask框架向web传输和接收参数 2、实现静态图片插入和图书上传 3、实现搭建…

宝塔面板使用Supervisor进程守护插件,配置守护Mysql的操作教程。

本篇文章主要讲解&#xff0c;在宝塔面板中使用Supervisor进程守护插件&#xff0c;配置守护Mysql的操作教程。 作者&#xff1a;任聪聪 日期&#xff1a;2023年11月5日 一、安装守护进程插件 安装插件一、进程守护插件 安装说明&#xff1a;在软件商店中搜索“进程守护”&am…

VC++常用命名法和宏定义

匈牙利命名法规则 一般情况下&#xff0c;变量的取名方式为&#xff1a; <scope_> <prefix_> <qualifier>。 范围前缀_&#xff0c;类型前缀_&#xff0c;限定词。 特殊的类型命名,前缀表示&#xff1a; 类、接口 前缀 类型 例子 备注 Lm Class …