C++之文件操作

1.C++文件操作

  C++中文件操作头文件:fstream。
  文件类型:文件文件和二进制文件。

  • 文件操作三大类:
        ofstream 写操作
        ifstream 读操作
        fstream:读写操作
  • 文件打开方式:
标志说明
ios::in只读
ios::out只写,文件不存在则创建,存在则打开并截断原内容
ios::ate打开一个已有的文件,并指向文件读指针指向文件尾,若文件不存在,则打开出错
ios::app打开文件,从文件尾添加内容,若文件不存在则创建
ios::trunc打开文件同时会截断原内容,单独使用时与ios::out相同
ios::binary以二进制方式打开
ios::in|ios::out打开文件,可读也可写,文件打开时原内容保持不变,若不存在则打开出错
ios::in|ios::out|ios::trunc打开文件,可读写,会截断原内容,文件不存在则创建

2.文本方式写入示例

#include < iostream >
#include < fstream >
using namespace std;
int main()
{/*1.创建文件*/ofstream fp;fp.open("test.txt",ios::out);//创建文件,会截断原内容if (!fp.is_open())//文件打开失败返回false{cout << "文件打开失败!" << endl;return 0;}fp << "C++文件操作示例!" << endl;fp << "写入数据测试" << endl;fp << "姓名:IT_阿水" << "t工作方向:" << "嵌入式开发" << "t工作时间:" << "6年" << endl;fp.close();//关闭文件system("pause");
}

3.文本方式读取示例

  C++中读取数据有多种方式实现。

2.1 示例1:重载>>读取

#include < iostream >
#include < fstream >
using namespace std;
int main()
{ifstream ifs;ifs.open("test.txt",ios::in);//只读方式打开if (!ifs.is_open()){cout << "文件打开失败!" << endl;return 0;}string str;while (ifs >> str)//以字符串方式读取{cout << "str=" << str << endl;;}//关闭文件ifs.close();system("pause");
}

2.2 利用成员函数getline读取

#include < iostream >
#include < fstream >
using namespace std;
int main()
{ifstream ifs;ifs.open("test.txt",ios::in);//只读方式打开if (!ifs.is_open()){cout << "文件打开失败!" << endl;return 0;}//第二种:getline()char buff[1024];while (ifs.getline(buff, sizeof(buff))){cout << "buff=" << buff << endl;}//关闭文件ifs.close();system("pause");
}

2.3 单个字符方式读取get()

#include < iostream >
#include < fstream >
using namespace std;
int main()
{ifstream ifs;ifs.open("test.txt",ios::in);//只读方式打开if (!ifs.is_open()){cout << "文件打开失败!" << endl;return 0;}//第三种:单个字符方式读取char c;while ((c = ifs.get()) != EOF){cout << c;}//关闭文件ifs.close();system("pause");
}

4.二进制方式读写示例

  • 二进制数据写入文件
函数:write(const _Elem* _Str, streamsize _Count)形参:_Str --写入的内容的起始地址_Count  --写入的字节数
  • 二进制数据读取文件
read(_Elem* _Str, streamsize _Count) ;形参:_Str --读取内容存放缓冲区_Count --要读取的字节数
#include < iostream >
#include < fstream >
#include < cstring >
using namespace std;
class Person
{
public:Person() {}Person(const char* name, int age){strcpy_s(this->name, name);this->age = age;}char name[20];//姓名int age;//年龄
};
int main()
{/*二进制写入数据示例*/fstream fs("test.doc", ios::out | ios::binary);if (!fs.is_open()){cout << "文件创建失败" << endl;return 0;}Person p("小王", 18);fs.write((const char *) & p, sizeof(p));//写入内容fs.close();//关闭文件/*二进制读取数据示例*/fs.open("test.doc", ios::in | ios::binary);if (!fs.is_open()){cout << "文件打开失败" << endl;return 0;}Person p2;fs.read((char *) & p2, sizeof(p2));cout << "读取的内容:" << endl;cout << "姓名:" << p2.name < < "t年龄:" << p2.age << endl;fs.close();system("pause");}

5.C++文件指针偏移

//C++文件指针偏移seekg(pos_type _Pos,ios_base::seekdir _Way)  --用于输入流,偏移位置指针到指定位置seekp(pos_type _Pos,ios_base::seekdir _Way)  --用于输出流,偏移位置指针到指定位置第一个参数:偏移量第二个参数:基于哪个位置ios::beg  --文件头ios::end  --文件尾ios::cur  --当前位置streamoff tellg()  --用于输入流,返回当前指针位置,streamoff 是一个long long类型streamoff tellp()  --用于输出流,返回当前指针位置返回值返回基于文件头的偏移量,字节为单位。失败则返回-1
  • 示例:
#include < iostream >
#include < fstream >
using namespace std;
int main()
{ifstream fs;fs.open("test.txt", ios::in );//打开文件,不存在则打开失败,不会截断原内容if (!fs.is_open()){cout << "文件打开失败" << endl;return 0;}fs.seekg(0,ios::end);//将文件指针偏移到文件末尾char buff[1024];streamoff  size = fs.tellg();//获取文件大小cout << "文件大小:" << size << "字节" << endl;fs.seekg(0, ios::beg);//将输入流偏移到文件头while (fs >> buff){cout << buff << endl;}fs.close();system("pause");return 0;
}

在这里插入图片描述

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

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

相关文章

大数据面试题:HBase读写数据流程

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 参考答案&#xff1a; 1、写数据流程 1&#xff09;Client先访问zookeeper&#xff0c;获取hbase:meta表位于哪个Region Server。 2&#xff09;访…

使用TensorFlow训练深度学习模型实战(上)

大家好&#xff0c;尽管大多数关于神经网络的文章都强调数学&#xff0c;而TensorFlow文档则强调使用现成数据集进行快速实现&#xff0c;但将这些资源应用于真实世界数据集是很有挑战性的&#xff0c;很难将数学概念和现成数据集与我的具体用例联系起来。本文旨在提供一个实用…

P1149火柴棒等式题解

P1149[NOIP2008 提高组] 火柴棒等式 题目描述 给你 n n n 根火柴棍&#xff0c;你可以拼出多少个形如 A B C ABC ABC 的等式&#xff1f;等式中的 A A A、 B B B、 C C C 是用火柴棍拼出的整数&#xff08;若该数非零&#xff0c;则最高位不能是 0 0 0&#xff09;。用…

详解Mybatis查询之resultType返回值类型问题【4种情况】

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 引言一、查询单行数据返回单个对象二、查询多行数据返回对象的集合三、 查询单行数据返回Map[Key,…

STN:Spatial Transformer Networks

1.Abstract 卷积神经网络缺乏对输入数据保持空间不变的能力&#xff0c;导致模型性能下降。作者提出了一种新的可学习模块&#xff0c;STN。这个可微模块可以插入现有的卷积结构中&#xff0c;使神经网络能够根据特征图像本身&#xff0c;主动地对特征图像进行空间变换&#x…

Maven学习笔记

Maven学习笔记 一、MAVEN基础1.1、Maven作用1.2、Maven基础概念1.2.1、仓库1.2.2、坐标1.2.2、仓库配置 1.3、 手动写一个maven程序1.4、依赖管理1.5、生命周期与插件1.5.1、构建生命周期1.5.2、插件 一、MAVEN基础 1.1、Maven作用 Maven的本质是一个项目管理工具&#xff0c…

【计算机网络】socket编程基础

文章目录 1. 源IP地址和目的IP地址2. 理解MAC地址和目的MAC地址3. 理解源端口号和目的端口号4. PORT与PID5. 认识TCP协议和UDP协议6. 网络字节序7. socket编程接口7.1 socket常见API7.2 sockaddr结构 1. 源IP地址和目的IP地址 因特网上的每台计算机都有一个唯一的IP地址&#…

性能优化问题

提升首屏的加载速度&#xff0c;是前端性能优化中「最重要」的环节&#xff0c;这里笔者梳理出一些 常规且有效 的首屏优化建议 1、路由懒加载 SPA 项目&#xff0c;一个路由对应一个页面&#xff0c;如果不做处理&#xff0c;项目打包后&#xff0c;会把所有页面打包成一个文…

Android平台如何实现第三方模块编码后(H.264/H.265/AAC/PCMA/PCMU)数据实时预览播放

技术诉求 我们在做GB28181设备对接模块和RTMP直播推送模块的时候&#xff0c;遇到这样的技术需求&#xff0c;设备&#xff08;如执法记录仪&#xff09;侧除了采集传统的摄像头外&#xff0c;还需要对接比如大疆等第三方数据源&#xff0c;确保按照GB28181规范和RTMP协议规范…

【后端面经-Spring】Spring简介

【后端面经-Spring】Spring简介 1. Spring简介2. Spring模块3. Spring核心特性4. Spring的后续拓展面试模拟参考资料 1. Spring简介 Spring是为了简化java项目开发设计的一款设计层面开源框架&#xff0c;其设计目的就是为了“简化开发”。 它使用分层架构&#xff0c;解决业务…

[NLP]Huggingface模型/数据文件下载方法

问题描述 作为一名自然语言处理算法人员&#xff0c;hugging face开源的transformers包在日常的使用十分频繁。在使用过程中&#xff0c;每次使用新模型的时候都需要进行下载。如果训练用的服务器有网&#xff0c;那么可以通过调用from_pretrained方法直接下载模型。但是就本人…

React Dva项目中.roadhogrc.mock.js直接自动导入mock目录下所有文件方式

上文 React Dva项目中模仿网络请求数据方法 中&#xff0c;我们书写了Dva项目模拟后端数据的方式 但是 我们.roadhogrc.mock.js中的这个处理其实并不好用 我们还需要一个一个的引入 我们可以直接靠一段代码 import fs from fs; import path from path; const mock {} fs.re…

19. 删除链表的倒数第 N 个结点

题目介绍 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…

NLP(六十二)HuggingFace中的Datasets使用

Datasets库是HuggingFace生态系统中一个重要的数据集库&#xff0c;可用于轻松地访问和共享数据集&#xff0c;这些数据集是关于音频、计算机视觉、以及自然语言处理等领域。Datasets 库可以通过一行来加载一个数据集&#xff0c;并且可以使用 Hugging Face 强大的数据处理方法…

[Tools: tiny-cuda-nn] Linux安装

official repo: https://github.com/NVlabs/tiny-cuda-nn 该包可以显著提高NeRF训练速度&#xff0c;是Instant-NGP、Threestudio和NeRFstudio等框架中&#xff0c;必须使用的。 1. 命令行安装 最便捷的安装方式&#xff0c;如果安装失败考虑本地编译。 pip install ninja g…

区块链与加密货币在Web3中的融入及意义

Web3是指下一代互联网&#xff0c;也被称为去中心化互联网。它的核心理念是建立一个去中心化的经济和社会系统&#xff0c;使得个人和社区能够更加自治和自主&#xff0c;而不依赖于中心化的机构和权力。 在Web3中&#xff0c;区块链和加密货币是非常重要的技术和概念。区块链是…

1.前端入门

文章目录 一、基础认知1.1 认识网页&#xff1a;1.2 五大浏览器1.3 Web标准 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、基础认知 1.1 认识网页&#xff1a; 1.网页由哪些部分组成&#xff1f; 文字、图片、音频、视频、超链接。 2.我们…

【机器学习】异常检测

异常检测 假设你是一名飞机涡扇引擎工程师&#xff0c;你在每个引擎出厂之前都需要检测两个指标——启动震动幅度和温度&#xff0c;查看其是否正常。在此之前你已经积累了相当多合格的发动机的出厂检测数据&#xff0c;如下图所示 我们把上述的正常启动的数据集总结为 D a t…

Jmeter常见问题之URI异常

这篇文章介绍一下"http://"重复导致的URI异常问题&#xff0c;通常从浏览器地址栏复制url&#xff0c;直接粘贴到Jmeter的http请求的服务器地址中会默认带上“http://”&#xff0c;要将http://删除&#xff0c;只写IP地址&#xff0c;如下图&#xff1a; 否则&…

项目开启启动命令整合

启动RabbitMQ管理插件 1.启动 RabbitMQ 管理插件。 rabbitmq-plugins enable rabbitmq_management rabbitmq-server # 直接启动&#xff0c;如果关闭窗⼝或需要在该窗⼝使⽤其他命令时应⽤就会停⽌ rabbitmq-server -detached # 后台启动 rabbitmq-server start # 启⽤服务 rab…