C++语言学习(三)—— 文件操作

目录

一、文件操作

1.1 打开文件

1.2 关闭文件

1.3 读取文件

1.4 写入文件

1.5 文件指针

1.6 文件状态

1.7 其他文件操作

二、文件操作函数

2.1 打开文件函数

2.2 关闭文件函数

2.3 写入文件函数

2.4 读取文件函数

2.5 读取一行函数

2.6 获取文件大小函数

2.7 检测文件结束函数

2.8 更改文件位置函数


一、文件操作

C++中的文件操作功能主要通过标准库中的fstream头文件提供。fstream头文件定义了三个类:ifstream、ofstream和fstream,分别用于从文件中读取数据、向文件中写了入数据以及同时读写文件。

要使用文件操作功能,我们首先需要包含fstream头文件:

#include <fstream>

接下来,我们可以声明一个ifstream对象来读取文件,一个ofstream对象来写入文件,或者一个fstream对象来同时读写文件。例如:

ifstream inputFile;
ofstream outputFile;
fstream file;

1.1 打开文件

在使用文件之前,我们需要先打开文件。可以使用成员函数open()来打开文件。open()函数接受文件名和打开方式作为参数。

打开文件的方式有以下几种:

  • ios::in:打开文件用于读取。
  • ios::out:打开文件用于写入。
  • ios::app:在文件末尾追加写入内容。
  • ios::binary:以二进制模式打开文件。

例如:

  • 要打开一个文件用于读取,可以这样做:
ifstream inputFile;
inputFile.open("example.txt", ios::in);
  • 要打开一个文件用于写入,可以这样做:
ofstream outputFile;
outputFile.open("example.txt", ios::out);
  • 要打开一个文件用于追加写入内容,可以这样做:
ofstream outputFile;
outputFile.open("example.txt", ios::app);

1.2 关闭文件

在我们完成对文件的操作之后,应该及时关闭文件。可以使用成员函数close()来关闭文件。

例如:

inputFile.close();
outputFile.close();

1.3 读取文件

使用ifstream对象可以从文件中读取数据。可以使用成员函数>>来读取文件中的数据,例如读取一个整数:

int num;
inputFile >> num;

可以使用getline()函数逐行读取文件中的数据,例如读取一个字符串:

string line;
getline(inputFile, line);

1.4 写入文件

使用ofstream对象可以向文件中写入数据。可以使用成员函数<<来向文件中写入数据,例如写入一个整数:

int num = 10;
outputFile << num;

可以使用成员函数write()来按字节写入数据,例如写入一个字符串:

string str = "Hello World";
outputFile.write(str.c_str(), str.size());

1.5 文件指针

在读取或写入文件时,文件指针用于指示当前操作的位置。使用istreamostream类的成员函数tellg()tellp()可以获取文件指针的当前位置。

例如:

streampos pos = inputFile.tellg(); // 获取读取指针的位置
outputFile.seekp(pos); // 将写入指针移动到指定位置

1.6 文件状态

在进行文件操作时,可能会遇到一些错误,如文件打开失败或文件读写错误。可以使用成员函数good()eof()fail()bad()来检查文件的状态。

例如:

if (inputFile.good()) {// 文件打开成功
}
if (outputFile.eof()) {// 到达文件末尾
}
if (outputFile.fail()) {// 文件读写错误
}
if (outputFile.bad()) {// 文件操作失败
}

1.7 其他文件操作

除了读取和写入文件之外,还可以对文件进行其他操作,如创建文件、删除文件、重命名文件等。

  • 使用fstream头文件中的成员函数remove()可以删除文件:
remove("example.txt");
  • 使用成员函数rename()可以重命名文件:
rename("oldname.txt", "newname.txt");
  • 使用成员函数mkdir()可以创建目录:
mkdir("directory");
  • 使用成员函数rmdir()可以删除目录:
rmdir("directory");

二、文件操作函数

C++中的文件操作主要通过文件流(fstream)来实现。fstream类既可以用于读取文件的内容,也可以用于写入文件。

2.1 打开文件函数

  • open()函数:用于打开文件。通过指定文件名和打开模式(读取、写入、读写等),可以返回一个文件流对象。
  • 示例:myfile.open("example.txt", ios::out);

2.2 关闭文件函数

  • close()函数:用于关闭文件。需要在对文件进行操作之后调用,以释放文件资源。
  • 示例:myfile.close();

2.3 写入文件函数

  • write()函数:用于将数据写入文件。第一个参数是要写入的数据指针,第二个参数是要写入的字节数。
  • 示例:myfile.write(data, sizeof(data));

2.4 读取文件函数

  • read()函数:用于从文件中读取数据。第一个参数是要读取的数据指针,第二个参数是要读取的字节数。
  • 示例:myfile.read(buffer, sizeof(buffer));

2.5 读取一行函数

  • getline()函数:用于从文件中读取一行数据。第一个参数是要读取的数据指针,第二个参数是要读取的最大字节数。
  • 示例:getline(myfile, line);

2.6 获取文件大小函数

  • seekg()函数:用于设置文件读取位置。第一个参数是要设置的位置,第二个参数是相对位置的基准(文件开头、当前位置、文件末尾)。
  • tellg()函数:用于获取当前文件读取位置。
  • 示例:myfile.seekg(0, ios::end); size = myfile.tellg();

2.7 检测文件结束函数

  • eof()函数:用于检测文件是否已经读取到末尾。
  • 示例:while (!myfile.eof()) { // do something }

2.8 更改文件位置函数

  • seekp()函数:用于设置文件写入位置。参数和seekg()函数相同。
  • 示例:myfile.seekp(0, ios::end);

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

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

相关文章

Java监听器模式在实际中的应用

监听器模式是一种行为型设计模式&#xff0c;它允许对象之间通过监听和触发事件的方式实现解耦&#xff0c;提高代码的灵活性和可维护性。在监听器模式中&#xff0c;存在两类角色&#xff1a;事件源&#xff08;Event Source&#xff09;和监听器&#xff08;Listener&#xf…

【PCL】mac下安装PCL的安装与配置

【PCL】mac下安装PCL的安装与配置 PCL PCL官方文档 PCL&#xff08;Point Cloud Library&#xff09;是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C编程库&#xff0c;它实现了大量点云相关的通用算法和高效数据结构&#xff0c;涉及到点云获取、滤波、分割、配…

从静态到动态化,Python数据可视化中的Matplotlib和Seaborn

​​本文分享自华为云社区《Python数据可视化大揭秘&#xff1a;Matplotlib和Seaborn高效应用指南》&#xff0c;作者&#xff1a; 柠檬味拥抱。 安装Matplotlib和Seaborn 首先&#xff0c;确保你已经安装了Matplotlib和Seaborn库。如果没有安装&#xff0c;可以使用以下命令…

知识图谱推理算法综述(上):基于距离和图传播的模型

背景 知识图谱系统的建设需要工程和算法的紧密配合&#xff0c;在工程层面&#xff0c;去年蚂蚁集团联合 OpenKG 开放知识图谱社区&#xff0c;共同发布了工业级知识图谱语义标准 OpenSPG 并开源&#xff1b;算法层面&#xff0c;蚂蚁从知识融合&#xff0c;知识推理&#xff…

底部填充胶在汽车电子领域的应用有哪些?

底部填充胶在汽车电子领域的应用有哪些&#xff1f; 在汽车电子领域&#xff0c;底部填充胶被广泛应用于IC封装等&#xff0c;以实现小型化、高聚集化方向发展。 底部填充胶在汽车电子领域有多种应用&#xff0c;包括以下方面&#xff1a; 传感器和执行器的封装&#xff1a;汽车…

AJAX(一):初识AJAX、http协议、配置环境、发送AJAX请求、请求时的问题

一、什么是AJAX 1.AJAX 就是异步的JS和XML。通过AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组合在一起使用的新方式。 2.XML 可扩展标记语言。XML被设计用来传输和…

工业级POE交换机的SSH配置步骤

工业级POE交换机的SSH&#xff08;Secure Shell&#xff09;配置可以通过以下步骤进行&#xff1a; 1. 连接到POE交换机&#xff1a;使用一个支持SSH协议的终端工具&#xff08;如PuTTY&#xff09;连接到POE交换机的管理接口。 2. 登录到POE交换机&#xff1a;输入正确的用户…

详解Java 中的 Lambda 表达式

引言&#xff1a; Lambda 表达式是 Java 8 中引入的一个重要特性&#xff0c;它可以使代码更加简洁、易读&#xff0c;并且更加具有函数式编程风格。Lambda 表达式本质上是一个匿名函数&#xff0c;它可以作为方法参数传递&#xff0c;也可以直接赋值给一个变量。 一、Lambda 表…

【数据结构与算法】直接插入排序和希尔排序

引言 进入了初阶数据结构的一个新的主题——排序。所谓排序&#xff0c;就是一串记录&#xff0c;按照其中的某几个或某些关键字的大小&#xff08;一定的规则&#xff09;&#xff0c;递增或递减排列起来的操作。 排序的稳定性&#xff1a;在一定的规则下&#xff0c;两个值…

电子方案:打地鼠

打地鼠玩具是一种经典的儿童游戏&#xff0c;它结合了电子技术来增加娱乐性和互动性。 电子技术的集成使得打地鼠玩具不仅能够提供基本的娱乐功能&#xff0c;还能够提供更多的互动性和游戏性。随着技术的发展&#xff0c;打地鼠玩具可能会包含更多的高级功能&#xff0c;如无…

如何使用 JavaScript 导入和导出 Excel

前言 在现代的Web应用开发中&#xff0c;与Excel文件的导入和导出成为了一项常见而重要的任务。无论是数据交换、报告生成还是数据分析&#xff0c;与Excel文件的交互都扮演着至关重要的角色。本文小编将为大家介绍如何在熟悉的电子表格 UI 中轻松导入 Excel 文件&#xff0c;…

Airflow【部署 01】调度和监控工作流工具Airflow官网Quick Start实操(一篇学会部署Airflow)

Airflow官网Quick Start实操 1.环境变量设置2.使用约束文件进行安装3.启动单机版3.1 快速启动3.2 分步骤启动3.3 启动后3.4 服务启动停止脚本 4.访问4.1 登录4.2 测试 来自官网的介绍&#xff1a; https://airflow.apache.org/ Airflow™是一个由社区创建的平台&#xff0c;以…

FFmpeg+mediamtx 实现将本地摄像头推送成RTSP流

文章目录 概要推流过程实现过程安装FFmpeg安装Mediamtx 启动推流 概要 FFmpegmediamtx实现将本地摄像头推送成RTSP流 FFmpeg 版本号为&#xff1a;N-114298-g97d2990ea6-20240321 mediamtx 版本号为&#xff1a;v1.6.0 推流过程 摄像头数据&#xff0c;经过ffmpeg的推流代码…

ESCTF-OSINT赛题WP

这你做不出来?check ESCTF{湖北大学_嘉会园食堂} 这个识图可以发现是 淡水渔人码头 但是 osint 你要发现所有信息 聊天记录说国外 同时 提示给了美国 你综合搜索 美国 渔人码头 在美国旧金山的渔人码头&#xff08;英语&#xff1a;Fisherman’s Wharf&#xff09;是一个著名旅…

ubuntu虚拟机扩展容量后,无效,其实还需要分配

参考这位大佬&#xff1a;https://www.cnblogs.com/learningendless/p/17718003.html 如果直接使用磁盘调整大小会发现有钥匙 会被锁住&#xff0c;无法调整&#xff0c;按照大佬步骤做&#xff0c;亲测有效

pandas中cumsum() 函数的应用

cumsum() 函数用于计算 DataFrame 或 Series 中数值型数据的累积和。它将沿着指定的轴&#xff08;行或列&#xff09;对数据进行累积求和&#xff0c;并返回一个具有相同形状的 DataFrame 或 Series。 下面是一个示例&#xff0c;说明如何使用 cumsum() 函数&#xff1a; im…

Android获取经纬度的最佳实现方式

Android中获取定位信息的方式有很多种&#xff0c;系统自带的LocationManager&#xff0c;以及第三方厂商提供的一些定位sdk&#xff0c;都能帮助我们获取当前经纬度&#xff0c;但第三方厂商一般都需要申请相关的key&#xff0c;且调用量高时&#xff0c;还会产生资费问题。这…

浅谈关于Linux的学习

Linux的整个知识构架是&#xff1a; 1、基本指令 2、系统编程 3、网络编程 指令只是很基础的一部分&#xff0c;学习Linux更加重要的是其底层原理的知识&#xff0c;需要从基本的指令开始&#xff0c;逐级而上&#xff0c;次第往深处挖掘。最后构建起整个的知识体系。而不是仅…

了解什么是Docker

了解什么是Docker Docker是一个开源的容器化平台&#xff0c;它使得开发者可以将应用程序及其依赖项打包到一个轻量级的、可移植的容器中。这些容器可以在任何支持Docker的系统上运行&#xff0c;确保了应用程序在不同环境之间的一致性和可移植性。&#xff0c;同时享受隔离性…

大数据中TopK问题

1.给定100个int数字&#xff0c;在其中找出最大的10个; import java.util.PriorityQueue;public class Main {public static void main(String[] args) {final int topK 3;int[] vec {4, 1, 5, 8, 7, 2, 3, 0, 6, 9};PriorityQueue<Integer> pq new PriorityQueue<…