C++青少年简明教程:文件

C++青少年简明教程:文件

文件是指存储在计算机文件系统中的数据集合。文件可以包含各种类型的信息,例如文本、图像、音频视频等。在 C++中,文件是一种数据流,可以用于读取或写入数据。C++提供了一系列的文件操作函数,用于实现对文件的读取、写入、打开、关闭等操作。

在 C++中,文件可以分为文本文件和二进制文件。这两种文件的区别在于它们存储数据的方式:

文本文件:文本文件以字符形式存储数据,例如 ASCII 或 Unicode 字符。每个字符占用一个字节的空间。文本文件通常用于存储文本信息,如代码、配置文件、文档等。C++中的输入输出文件流(ifstream 和 ofstream)默认以文本模式打开文件。

二进制文件:二进制文件以字节形式存储数据,每个数据项可以是任意长度。二进制文件通常用于存储非文本信息,如图像、音频、视频等。C++中的输入输出文件流也可以以二进制模式打开文件(通过在 open() 函数中添加 ios::binary 标志)。

文本文件是包含可读字符的文件,例如.txt和.csv等文件通常是文本文件。图像、音频和视频等文件是二进制文件,因为它们包含嵌入在其中的二进制数据。图像文件通常包括.bmp、.jpg、.png等格式,音频文件通常包括.wav、.mp3等格式,视频文件通常包括.mp4、.mov等格式。

文件的路径可以使用字符串表示。文件路径可以是相对路径或绝对路径。

相对路径是相对于当前工作目录的路径。当前工作目录是执行程序时操作系统指定的默认路径。例如,如果当前工作目录是 D:\Test\John,而文件位于该目录下的子目录 Files 中,可以使用相对路径来表示文件路径:"Files/myfile.txt"。

绝对路径是文件的完整路径,包括驱动器名(在Windows系统中)或根目录符号(在类Unix系统中)。绝对路径从文件系统的根目录开始。例如,在Windows系统中,文件 myfile.txt 位于 D:\Test\John\Files,可以使用绝对路径来表示文件路径:" D:\Test\John\Files/myfile.txt"。

下面介绍常用的文件操作介绍。

C++文件操作步骤

☆ C方式的文件操作步骤

引入必要头文件,C文件需要使用到<cstdio>(stdio.h)库,在程序开始前引入头文件#include <cstdio>或#include <stdio.h>

1.打开文件:通过使用fopen()函数创建文件指针来打开文件。

这个函数需要两个参数:文件名和打开模式。

2.读写文件内容:

使用fgetc()函数从文件中读取一个字符。使用fputc()函数向文件中写入一个字符。

使用fgets()函数从文件中读取一行字符串。使用fputs()函数将字符串写入文件。

3.关闭文件:使用fclose()函数关闭文件。

另外,需要注意文件操作过程可能会遇到一些异常情况,如文件打开失败、文件读写失败等等,需要进行相应的处理来保证程序的正确性和健壮性。

例如:

#include <stdio.h>int main() {  // 打开文件  FILE *file = fopen("example.txt", "r");  if (file == NULL) {  printf("无法打开文件\n");  return 0;  }// 写入文件  fputs("Hello, World!", file);// 读取文件  char buffer[256];  fgets(buffer, 256, file);  printf("%s", buffer);// 关闭文件  fclose(file);return 0;  
}

☆ C++文件操作步骤

引入必要的头文件,在程序开始前引入头文件<iostream> 、<fstream>。

与C相比,C++提供了更多方便的方式来打开和操作文件。

1.打开文件:在打开文件方面的 C++提供了比C更丰富的方式。除兼容C方式外,<iostream>的open()函数来打开文件,这个函数需要两个参数:文件名和打开模式。这个函数需要两个参数:文件名和打开模式。还可以使用文件流类来打开文件,如std::ifstream file(); 

2.读写文件内容:

使用get()函数从文件中读取一个字符。使用put()函数向文件中写入一个字符。

使用getline()函数从文件中读取一行字符串。使用<<运算符或write()函数向文件中写入字符串。

3.关闭文件:使用close()函数关闭文件。

另外,需要注意文件操作过程可能会遇到一些异常情况,如文件打开失败、文件读写失败等等,需要进行相应的处理来保证程序的正确性和健壮性。

例如:

#include <iostream>
#include <fstream>
using namespace std;int main() {const char* filename = "example.txt"; // 文件名const char* mode = "w+"; // 打开文件的模式,这里是以读写方式打开// 创建并打开文件,检查是否成功打开ofstream out_file;out_file.open(filename, ios::out);if (!out_file.is_open()) {cerr << "文件打开失败" << endl;return -1;}// 写入文件const char* content = "Hello, World!";out_file << content;// 关闭文件out_file.close();// 打开文件,检查是否成功打开ifstream in_file;in_file.open(filename, ios::in);if (!in_file.is_open()) {cerr << "文件打开失败" << endl;return -1;}// 读取文件char buffer[1024];in_file.getline(buffer, sizeof(buffer));cout << buffer << endl;// 关闭文件in_file.close();return 0;
}

将上面代码,改用文件流类打开文件:

#include <iostream>  
#include <fstream>
using namespace std;int main() {  // 打开文件  ofstream file("example.txt", ios::in);  if (!file.is_open()) {  cerr << "无法打开文件" << endl;  return 1;  }// 写入文件  file.write("Hello, World!", 50);// 关闭文件  file.close();// 重新打开文件ifstream readfile("example.txt");if (!readfile.is_open()) {cerr << "无法打开文件" << endl;return 1;}// 读取文件char buffer[256];  readfile.read(buffer, 256);  cout << buffer << endl;// 关闭文件readfile.close();return 0;  
}

附、C++文件操作 https://blog.csdn.net/cnds123/article/details/109685986

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

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

相关文章

这个国际档案日,大比武放榜、直播预约、课件下载,一样都不能少!

关注我们 - 数字罗塞塔计划 - 2024年6月9日第十七个国际档案日来临&#xff0c;数字罗塞塔计划放大招&#xff1a;第二届大比武活动榜单揭晓、ARCHE-2024上海智慧档案高峰论坛直播预约、2024上半年度课件大礼包下载。如此大礼&#xff0c;岂能错过&#xff1f; PART.01 榜单…

【LeetCode 第 401 场周赛】K秒后第 N 个元素的值

文章目录 1. K秒后第 N 个元素的值&#x1f197; 1. K秒后第 N 个元素的值&#x1f197; 题目链接&#x1f517; &#x1f427;解题思路&#xff1a; 前缀和 小规律&#x1f34e; &#x1f34e; 从上图观察可知&#xff0c;规律一目了然&#xff0c;arr[i] arr[i] 对上一…

2024-6-9

今日安排&#xff1a; 学校的课程作业windows SEH 机制简单入门windows 用户态 pwn / 内核态入门 计网实验报告 && 网安实验报告继续审计 nf_tables 源码&#xff0c;主要看 active 相关逻辑。复现 CVE-2022-32250 这个漏洞【 && iptables 相关学习】♥♥♥♥…

中介子方程九

X$XFX$XEXyXαXiX$XαXiXrXKXrXiXαX$XiXαXyXEX$XFX$XEXyXαXiX$XαXiXrXKXrXiXαX$XiXαXyXEX$XαXηXtXαX$XWXyX$XyXWX$XpXαXqXηX$XeXαXhX$XdX$XpX$XdX$XyXeXαX$XEXyXαXiX$XαXiXrXKXrXiXαX$XiXαXyXEX$XαXeXyX$XdX$XpX$XdX$XhXαXeX$XηXqXαXpX$XWXyX$XyXWX$XαXt…

基于vue的音乐播放器的设计与实现(论文+源码)_kaic

摘 要 当下&#xff0c;如果还依然使用纸质文档来记录并且管理相关信息&#xff0c;可能会出现很多问题&#xff0c;比如原始文件的丢失&#xff0c;因为采用纸质文档&#xff0c;很容易受潮或者怕火&#xff0c;不容易备份&#xff0c;需要花费大量的人员和资金来管理用纸质文…

【Qt秘籍】[010]-Qt常用控件

一、控件概述 在GUI&#xff08;图形用户界面&#xff09;开发领域&#xff0c;Qt无疑是众多开发者心中的首选框架之一。它不仅跨平台、功能强大&#xff0c;而且拥有丰富且灵活的控件库&#xff0c;使得开发者能够快速构建美观、高效的用户界面。对于初学者而言&#xff0…

C语言每日一题——分数加减(以最简形式输出)

请进行程序设计&#xff0c;以最简形式输出两个分数的加减运算结果。 输入包含多组测试数据&#xff0c;每组数据占一行&#xff0c;每行数据是一个字符串&#xff0c;格式为&#xff1a;"a/boc/d"。 其中a, b, c, d是一个0-9的整数。o是运算符""或者&quo…

GitLab代码导出 gitlab4j-api 实现

目录 GitLab简介 GitLab 的主要特点包括&#xff1a; GitLab代码导出 gitlab4j-api 添加 gitlab4j-api 依赖 使用 gitlab4j-api 获取特定命名空间下的所有项目 说明 注意事项 GitLab简介 GitLab 是一个开源的代码仓库和协作平台&#xff0c;主要用于版本控制和源代码管理…

2024年城市客运安全员考试题库及答案

一、单选题 161.依据《机动车强制报废标准规定》规定&#xff0c;小、微型出租客运汽车使用年限为&#xff08;&#xff09;年。 A.5 B.6 C.8 D.10 答案&#xff1a;C 162.依据《中华人民共和国道路交通安全法》&#xff0c;醉酒驾驶营运机动车的&#xff0c;由公安机关…

深度剖析整型和浮点型数据在内存中的存储(C语言)

目录 整型在内存中的存储 为什么整型在内存中存储的是补码&#xff1f; 大小端字节序 为什么有大端小端&#xff1f; 浮点型家族 浮点数在内存中的存储 long long 整型在内存中的存储 整型在内存中有三种二进制表示形式&#xff1a;原码&#xff0c;反码&#xff0c;补码…

Github 2024-06-10开源项目周报 Top15

根据Github Trendings的统计,本周(2024-06-10统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目8Jupyter Notebook项目2Go项目2C++项目1Shell项目1Lua项目1JavaScript项目1MDX项目1C项目1HTML项目1Python - 100天从新手到大师 创建…

列举常见的SQL语句

常见的SQL&#xff08;结构化查询语言&#xff09;语句用于管理&#xff08;如检索、插入、更新和删除&#xff09;关系型数据库中的数据。以下是一些常见的SQL语句示例&#xff1a; 数据查询&#xff08;SELECT&#xff09; 选择所有列和所有行 sql复制代码 SELECT * FROM 表…

关于目前ggrcs包的报错解决方案

目前有不少粉丝私信我说使用ggrcs包出现如下错误 我查看了一下&#xff0c;目前报错来源于新版本后的RMS包&#xff0c;主要是预测函数的报错&#xff0c;这个只能等R包作者来修复这个错误。目前需要急用的话&#xff0c;我提供了一个方案&#xff0c;请看下面视频操作 关于目前…

JWT理论介绍

文章目录 一、什么是JWT二、JWT的组成1.Header&#xff08;头部&#xff09;2.Payload&#xff08;负载&#xff09;3. Signature&#xff08;签名&#xff09; 三、为什么要使用JWT 一、什么是JWT JWT&#xff08;JSON Web Token&#xff09;是一个开放标准&#xff08;RFC 7…

GEE训练教程——如何确定几何形状的中心点坐标和相交的坐标

简介 在GEE中&#xff0c;可以使用.geometry()方法来获取几何形状的中心点坐标和相交的坐标。 首先&#xff0c;使用.geometry()方法获取几何形状的几何信息&#xff0c;然后使用.centroid()方法获取几何形状的中心点坐标。示例代码如下&#xff1a; // 获取几何形状的中心点…

家族企业如何找到合适的人才

家族企业似乎对外来的资源和活力会产生排斥作用。一般外来人员很难享受股权&#xff0c;其心态也永远只是打工者&#xff0c;始终难以融入组织中。 在80年代&#xff0c;家族企业靠胆识创业&#xff0c;90年代&#xff0c;靠经验发展&#xff0c;但在知识经济的今天&#xff0c…

ResourceManager 的 rpc server 模型

一. yarn ResourceManager 的三种通信协议 ResourceTrackerProtocol NodeManager 和 ResourceManager 的 RPC 通信协议。其中 ResourceManager 充当RPC Server的角色&#xff0c;而 NodeManager 充当 RPC Client 的角色。NodeManager 通过该协议向 ResourceManager 注册、汇报…

kotlin 音频播放,需要 支持 多音轨同时播放 音频文件, 且支持设置播放速度帮我写一段代码。 要求在音频播放期间,可以设置播放速度

在Android中&#xff0c;SoundPool 主要用于播放短小的音频片段&#xff0c;如游戏音效&#xff0c;并且它并不直接支持设置播放速度&#xff08;播放速率&#xff09;。SoundPool 的 play 方法允许你调整播放的优先级和循环次数&#xff0c;但并不能直接调整播放速度。 然而&…

使用Puppeteer生成echarts图片

Puppeteer简介 Puppeteer 是一个用于控制 Headless Chrome 或 Chromium 浏览器的 Node.js 库。它提供了一个高层次的 API&#xff0c;能够让你以编程方式操作浏览器&#xff0c;从而实现自动化任务&#xff0c;比如生成页面截图和 PDF、抓取网页内容、自动化表单提交、UI 测试…

快速测试 Mybatis 复杂SQL,无需启动 Spring

快速测试mybatis的sql 当我们写完sql后&#xff0c;我们需要测试下sql是否符合预期&#xff0c;在填入各种参数后能否正常工作&#xff0c;尤其是对于复杂的sql。 一般我们测试可能是如下的代码: 由于需要启动spring&#xff0c;当项目较大的时候启动速度很慢&#xff0c;有些…