当前位置: 首页 > news >正文

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

相关文章:

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

C青少年简明教程&#xff1a;文件 文件是指存储在计算机文件系统中的数据集合。文件可以包含各种类型的信息&#xff0c;例如文本、图像、音频视频等。在 C中&#xff0c;文件是一种数据流&#xff0c;可以用于读取或写入数据。C提供了一系列的文件操作函数&#xff0c;用于实现…...

Kimichat使用案例010:快速识别出图片中的表格保存到Excel

文章目录 一、介绍二、图片信息三、输入内容四、输出内容五、markdown提示词六、markdown输出一、介绍 如果有一张图片格式的表格,想要快速复制到Excel表格中,那么一般要借助于OCR工具。之前试过不少在线OCR工具,识别效果差强人意。其实,kimichat就可以非常好的完成这个任务…...

[大师C语言(第二十四篇)]C语言指针探秘

引言 在C语言的学习和应用中&#xff0c;指针无疑是最重要、最难以掌握的概念之一。它为C语言提供了强大的功能和灵活性&#xff0c;同时也带来了不少的复杂性。本文将深入探讨C语言指针背后的技术&#xff0c;帮助你更好地理解和应用指针。 第一部分&#xff1a;指针的基本概…...

Docker命令总结

文章目录 Docker命令总结Docker环境Docker容器生命周期Docker容器运维Docker容器rootfsDocker镜像仓库Docker本地镜像管理Docker容器资源Docker系统日志 Docker命令总结 docker命令非常多&#xff0c;这里主要分为8类总结 Docker环境 可以查看Docker版本和自身的详细信息 d…...

把chatgpt当实习生,进行matlab gui程序编程

最近朋友有个项目需要整点matlab代码&#xff0c;无奈自己对matlab这种工科的软件完全是外行&#xff0c;无奈只有求助gpt这种AI助手了。大神们告诉我们&#xff0c;chatgpt等的助手已经是大学实习生水平啦&#xff0c;通过多轮指令交互就可以让他帮你完成工作啦&#xff01;所…...

LabVIEW 与组态软件在自动化系统中的应用比较与选择

LabVIEW 确实在非标单机设备、测试和测量系统中有着广泛的应用&#xff0c;特别是在科研、教育、实验室和小型自动化设备中表现突出。然而&#xff0c;LabVIEW 也具备一定的扩展能力&#xff0c;可以用于更复杂和大型的自动化系统。以下是对 LabVIEW 与组态软件在不同应用场景中…...

html--万年历

<!DOCTYPE html> <html lang"zh_CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><meta charset"utf-8" /><title>万年历</title><link rel"styles…...

2013年 阿拉斯加巴罗活动层厚度和土壤含水量

Pre-ABoVE: Active Layer Thickness and Soil Water Content, Barrow, Alaska, 2013 ABoVE前&#xff1a;阿拉斯加巴罗活动层厚度和土壤含水量&#xff0c;2013年 简介 文件修订日期&#xff1a;2018-01-10 数据集版本&#xff1a;1 摘要 该数据集提供了 2013 年 8 月在…...

超详解——python数字和运算——小白篇

目录 1.位运算 2. 常用内置函数/模块 math模块&#xff1a; random模块&#xff1a; decimal模块&#xff1a; 3.内置函数&#xff1a; 总结&#xff1a; 1.位运算 位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符&#xff1a; 按位与&…...

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中&#xff0c;选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合&#xff0c;帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义&#xff1a;分辨率…...

Java——IO流(一)-(2/9):File类的常用方法(判断文件类型、获取文件信息、创建删除文件、遍历文件夹)

目录 常用方法1&#xff1a;判断文件类型、获取文件信息 方法 实例演示 常用方法2&#xff1a;创建文件、删除文件 方法 实例演示 常用方法3&#xff1a;遍历文件夹 方法 实例演示 常用方法1&#xff1a;判断文件类型、获取文件信息 方法 File提供的判断文件类型、获…...

电子设计入门教程硬件篇之集成电路IC(二)

前言&#xff1a;本文为手把手教学的电子设计入门教程硬件类的博客&#xff0c;该博客侧重针对电子设计中的硬件电路进行介绍。本篇博客将根据电子设计实战中的情况去详细讲解集成电路IC&#xff0c;这些集成电路IC包括&#xff1a;逻辑门芯片、运算放大器与电子零件。电子设计…...

Unity3D测量面积和角度实现方法(二)

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、unity测量面积&#x1f449;1-1 视频效果&#x1f449;1-2 先创建预制体&#x1f449;1-3 在创建LineRenderer预制体&#x1f449;1-4 代码如下 &#x1f449;二、测量平面和测量空间切换&…...

vite 配置 typescript 环境

要在 Vite 项目中配置 TypeScript 环境&#xff0c;你需要遵循几个步骤来确保 TypeScript 被正确设置并可以与 Vite 一起工作。以下是一个基本的指南&#xff1a; 初始化项目 如果你还没有初始化项目&#xff0c;可以使用 npm 或 yarn 初始化一个新的项目&#xff1a; npm i…...

ThreadCache线程缓存

一.ThreadCache整体结构 1.基本结构 定长内存池利用一个自由链表管理释放回来的固定大小的内存obj。 ThreadCache需要支持申请和释放不同大小的内存块&#xff0c;因此需要多个自由链表来管理释放回来的内存块.即ThreadCache实际上一个哈希桶结构&#xff0c;每个桶中存放的都…...

UE5_加载本地图片(jpg, png) 转 UTexture

UE5_加载图片到UTexture __Desc使用方式源码 __Desc __Time__: 2024-06-05 16:30 __Author__: Yblackd __Desc__: UE5.2 加载本地图片 转 UTexture2D, 给材质 和 UMG 使用使用方式 新建继承BlueprintFunctionLibrary c 类复制下面源码&#xff0c;修改类名实测加载 jpg,jpeg,…...

Linux操作系统:Spark在虚拟环境下的安装及部署

将Spark安装到指定目录 // 通过wget下载Spark安装包 $ wget https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.7.tgz // 将spark解压到安装目录 $ tar –zxvf spark-2.1.1-bin-hadoop2.7.tgz –C /usr/local/ // 重命名 $ mv /usr/local/spark-2.1.1-bin-hado…...

内网安全--隧道技术代理技术

注:本文仅做技术交流,请勿非法破坏... 目录 项目: 1-Ngrok 用法 2-Frp 用法 3-Nps 用法 4-Spp 用法 工具: windows下: Proxifier(推荐~) Sockscap ccproxy Linux下: Proxychains 用法 http://t.csdnimg.cn/88Ew7 隧道技术&#xff1a;解决不出网协议上线的问…...

彩虹易支付最新版源码

源码简介 彩虹易支付最新版源码&#xff0c;更新时间为5.1号 2024/05/01&#xff1a; 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 安装环境 1.PHP版本>7.4 2.Mysql数据库 安装教…...

python生成excel数据并实现隔行变色

代码 from openpyxl import Workbook from datetime import date from openpyxl.styles import PatternFilldef create_excel():wb Workbook()sh wb.activerows [[Date, Batch 1, Batch 2, Batch 3],[date(2024, 2, 1), 40, 30, 25],[date(2024, 2, 2), 40, 25, 30],[date(…...

IEEE754 十进制数转32位浮点数格式

为了将十进制数37.25转换为IEEE 754短浮点数格式&#xff08;32位&#xff09;&#xff0c;我们需要按照以下步骤进行&#xff1a; IEEE 754标准结构 IEEE 754标准的单精度浮点数&#xff08;32位&#xff09;格式如下&#xff1a; 1位符号位&#xff08;S&#xff09;8位指…...

JVM内存分析之JVM分区与介绍

JVM&#xff08;Java Virtual Machine&#xff09;作为Java平台的核心组件&#xff0c;为Java应用程序的运行提供了一个虚拟的计算机环境。为了更好地理解和优化Java应用程序的性能&#xff0c;对JVM的内存管理进行深入分析是至关重要的。本文将详细介绍JVM的内存分区及其功能。…...

多目标检测模型加权框集成

优秀项目推荐&#xff1a;https://gitcode.com/ZFTurbo/Weighted-Boxes-Fusion/overview 参考链接&#xff1a; 目标检测加权框融合 WBF原理讲解 https://blog.csdn.net/YXD0514/article/details/132574588 目标检测加权框融合 WBF原理讲解&#xff08;Weighted Boxes Fusion&…...

转型AI产品经理(6):“ 序列位置效应”如何应用在Chatbot产品中

序列位置效应是心理学中的一个记忆现象&#xff0c;指的是人们对一系列信息的记忆效果受到信息在序列中位置的影响。具体来说&#xff0c;人们通常更容易记住列表的开头和结尾部分的项目&#xff0c;而对中间部分的项目记忆较差。这个效应可以进一步分为“首因效应”和“近因效…...

ESP32:往MicroPython集成PCNT以支持硬件正交编码器

背景 官方发布的1.23依然没有在ESP32中集成PCNT功能。考虑到硬件的PCNT模块可以提供4倍的编码精度&#xff08;对比使用PIn IRQ&#xff09;&#xff0c;还能提供硬件去毛刺。 还是自己集成一下吧。 实际上Github上早在2022年1月的时候就已经有人建议了将PCNT加入正式版本的功…...

Unity基础实践小项目

项目流程&#xff1a; 需求分析 开始界面 选择角色面板 排行榜面板 设置面板 游戏面板 确定退出面板 死亡面板 UML类图 准备工作 1.导入资源 2.创建需要的文件夹 3.创建好面板基类 开始场景 开始界面 1.拼面板 2.写脚本 注意事项&#xff1a;注意先设置NGUI的分辨率大小&…...

Set up a WordPress blog with Nginx

CentOS7 配置Nginx域名HTTPS Here is the revised guideline for setting up a WordPress blog with Nginx: Step 1: Install Nginx, MySQL, and PHP (LEMP Stack) Install Nginx: sudo yum install nginx sudo systemctl start nginx sudo systemctl enable nginxInstall MyS…...

Facebook开户|Facebook广告设计与测试优化

早上好家人们~今天Zoey给大家伙带来的是Facebook广告设计与测试优化&#xff0c;需要的家人们看过来啦&#xff01; 一、避免复杂用图和过多的文字 根据Facebook的数据显示&#xff0c;用户平均浏览一个贴文的时间在手机上仅花1.7秒、在电脑上则为2.5秒。因此&#xff0c;广告…...

vite获取所有环境变量(env)

0.环境变量文件 API_URL8888888 VITE_API_URL99999991.定义环境变量 默认情况下&#xff0c;vite只获取以VITE_为前缀的环境变量。 为了防止意外地将一些环境变量泄漏到客户端&#xff0c;只有以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码 但如果你觉得你是进击的巨人…...

【算法】常用排序算法(插入排序、希尔排序、堆排序、选择排序、冒泡排序、快速排序、归并排序、计数排序)超详细

排序算法是数据结构相关知识中非常重要的一节&#xff0c;相信很多小伙伴对这部分知识一知半解。那么接下来&#xff0c;小编就要带领大家一起来进行对排序算法的深入剖析学习&#xff0c;希望本篇文章能够使你有所收获&#xff01; 一.常见的排序算法 排序算法有很多种&#…...

做美食介绍的网站/福建百度推广

随着微软2013系列产品的深入推广和功能的完善&#xff0c;越来越多的企业喜欢选择最新最好的微软基础架构产品&#xff0c;Lync Server 2013就是一款现在非常流行的企业内部的即时通讯工具。很多用户可能在客户端的选择上&#xff0c;或多或少的都会从早期的 Office Communicat…...

从化专业做网站/品牌营销推广策划方案

转载地址&#xff1a;http://cnodejs.org/topic/58f376fec749f63d48fe9548 今天就要给大家安利一下在VScode上进行断点调试的方法。 VScode除了out-of-box支持JavaScript和TypeScript&#xff0c;还支持Node.js调试&#xff0c;简直就是为前端工程师而生的&#xff0c;对不对……...

wordpress snow 3d/凡科建站模板

1&#xff0c;什么是Session Session一般译为会话&#xff0c;是解决Http协议的无状态问题的方案&#xff0c;可以将一次会话中的数据存储在服务器端的内存中&#xff0c;保证在下一次的会话中可以使用。 在客户端浏览器第一次向服务器端发送请求时&#xff0c;服务器端会为这个…...

wordpress分享到/网络营销的特点

Redis是一个不错的缓存数据库&#xff0c;读取数据速度效率都很不错。今天大家共同研究下redis的用法。结合网上的资料和自己的摸索&#xff0c;先来看下安装与配置把。 咱们主要看在WINDOWS上怎样使用REDIS数据库。 下载地址&#xff1a;https://github.com/dmajkic/redis/dow…...

wordpress改wp admin/软文营销名词解释

题目&#xff1a; 0,1&#xff0c;...n-1这n个数字排成一个圆圈&#xff0c;从数字0开始每次从这个圆圈里删除第m个数字&#xff0c;求出这个圆圈里剩下的最后一个数字。 思路&#xff1a; 1、环形链表模拟圆圈 创建一个n个节点的环形链表&#xff0c;然后每次在这个链表中删除…...

包包网站建设策划书/什么是网络推广员

人生苦短&#xff0c;我选Python 前文传送门 小白学 Python&#xff08;1&#xff09;&#xff1a;开篇 小白学 Python&#xff08;2&#xff09;&#xff1a;基础数据类型&#xff08;上&#xff09; 小白学 Python&#xff08;3&#xff09;&#xff1a;基础数据类型&…...