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

c++ 文件及基本读写总结

在 C++ 中,文件操作是非常重要的一部分,主要用于将数据存储到文件中,或者从文件中读取数据。C++ 标准库提供了fstream头文件,其中包含了用于文件操作的类,主要有ifstream(用于输入文件流,即从文件读取数据)、ofstream(用于输出文件流,即向文件写入数据)和fstream(既可以用于读取也可以用于写入)。以下是关于 C++ 文件基本读写的详细总结:
1. 包含头文件
在使用文件操作之前,需要包含fstream头文件。

#include <fstream>

2. 打开文件
在进行文件读写操作之前,需要先打开文件。可以使用open函数或者在构造函数中指定文件名来打开文件。
示例代码

#include <iostream>
#include <fstream>int main() {// 使用构造函数打开文件std::ofstream outFile("example.txt");if (!outFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}// 使用open函数打开文件std::ifstream inFile;inFile.open("example.txt");if (!inFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}// 关闭文件outFile.close();inFile.close();return 0;
}

3. 文件打开模式
在打开文件时,可以指定文件的打开模式,常见的打开模式如下:

  • ios::in:以输入模式打开文件,用于读取数据。
  • ios::out:以输出模式打开文件,用于写入数据。如果文件不存在,则创建文件;如果文件已存在,则清空文件内容。
  • ios::app:以追加模式打开文件,用于在文件末尾追加数据。
  • ios::binary:以二进制模式打开文件。
  • ios::trunc:如果文件已存在,则清空文件内容。
  • ios::ate:打开文件后将文件指针定位到文件末尾。
    示例代码
#include <iostream>
#include <fstream>int main() {// 以追加模式打开文件std::ofstream outFile("example.txt", std::ios::app);if (!outFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}outFile.close();return 0;
}

4. 写入文件
使用ofstream类可以将数据写入文件,与使用cout输出到控制台类似,使用<<运算符。
示例代码

#include <iostream>
#include <fstream>int main() {std::ofstream outFile("example.txt");if (!outFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}// 写入数据outFile << "Hello, World!" << std::endl;outFile << 123 << std::endl;outFile.close();return 0;
}

5. 读取文件
使用ifstream类可以从文件中读取数据,与使用cin从控制台读取数据类似,使用>>运算符。
示例代码

#include <iostream>
#include <fstream>
#include <string>int main() {std::ifstream inFile("example.txt");if (!inFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}std::string line;int num;// 读取数据std::getline(inFile, line);inFile >> num;std::cout << "读取的字符串: " << line << std::endl;std::cout << "读取的整数: " << num << std::endl;inFile.close();return 0;
}

6. 二进制文件读写
除了文本文件读写,C++ 还支持二进制文件读写。使用ios::binary模式打开文件,使用read和write函数进行读写操作。
示例代码

#include <iostream>
#include <fstream>struct Person {char name[50];int age;
};int main() {// 写入二进制文件Person p = {"John", 25};std::ofstream outFile("person.bin", std::ios::binary);if (!outFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}outFile.write(reinterpret_cast<const char*>(&p), sizeof(Person));outFile.close();// 读取二进制文件Person readPerson;std::ifstream inFile("person.bin", std::ios::binary);if (!inFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}inFile.read(reinterpret_cast<char*>(&readPerson), sizeof(Person));std::cout << "姓名: " << readPerson.name << std::endl;std::cout << "年龄: " << readPerson.age << std::endl;inFile.close();return 0;
}

outFile.close();
inFile.close();

8. 检查文件状态
在进行文件操作时,可以使用一些函数来检查文件的状态,例如:

  • is_open():检查文件是否成功打开。
  • eof():检查是否到达文件末尾。
  • fail():检查文件操作是否失败。
  • bad():检查文件是否发生严重错误。
    示例代码
#include <iostream>
#include <fstream>int main() {std::ifstream inFile("example.txt");if (!inFile.is_open()) {std::cerr << "无法打开文件!" << std::endl;return 1;}int num;while (inFile >> num) {std::cout << num << std::endl;}if (inFile.eof()) {std::cout << "到达文件末尾!" << std::endl;}if (inFile.fail()) {std::cerr << "文件操作失败!" << std::endl;}inFile.close();return 0;
}

相关文章:

c++ 文件及基本读写总结

在 C 中&#xff0c;文件操作是非常重要的一部分&#xff0c;主要用于将数据存储到文件中&#xff0c;或者从文件中读取数据。C 标准库提供了fstream头文件&#xff0c;其中包含了用于文件操作的类&#xff0c;主要有ifstream&#xff08;用于输入文件流&#xff0c;即从文件读…...

如何调试Linux内核?

通过创建一个最小的根文件系统&#xff0c;并使用QEMU和GDB进行调试。 1.准备工作环境 确保系统上安装了所有必要的工具和依赖项。 sudo apt-get update //更新一下软件包 sudo apt-get install build-essential git libncurses-dev bison flex libssl-dev qemu-system-x…...

Docker入门指南:Windows下docker配置镜像源加速下载

Windows下docker配置镜像源加速下载 docker的官方镜像是海外仓库&#xff0c;默认下载耗时较长&#xff0c;而且经常出现断站的现象&#xff0c;因此需要配置国内镜像源。 国内镜像源概述 国内现有如下镜像源可以使用 "http://hub-mirror.c.163.com", "http…...

java后端开发day24--阶段项目(一)

&#xff08;以下内容全部来自上述课程&#xff09; GUI&#xff1a;Graphical User Interface 图形用户接口&#xff0c;采取图形化的方式显示操作界面 分为两套体系&#xff1a;AWT包&#xff08;有兼容问题&#xff09;和Swing包&#xff08;常用&#xff09; 拼图小游戏…...

TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具

蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件&#xff0c;专为追求简洁与高效观影体验的用户设计。该软件从零开始编写&#xff0c;界面清爽&#xff0c;操作流畅&#xff0c;特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…...

2025.3.2机器学习笔记:PINN文献阅读

2025.3.2周报 一、文献阅读题目信息摘要Abstract创新点网络架构实验结论不足以及展望 一、文献阅读 题目信息 题目&#xff1a; Physics-Informed Neural Networks of the Saint-Venant Equations for Downscaling a Large-Scale River Model期刊&#xff1a; Water Resource…...

2025AI 有哪些重要的发展趋势?

2025 年&#xff0c;AI 有哪些重要的发展趋势&#xff1f; 看看大佬们的看法&#xff1a; 马斯克&#xff1a;“人形机器人生产、自动驾驶突破、脑机接口进化” 奥特曼&#xff1a;“2025年&#xff0c;AGI即将到来” 黄仁勋&#xff1a;“通用机器人元年、能源效率的提升”…...

uni-app 全局请求封装:支持 Promise,自动刷新 Token,解决 401 过期问题

在 uni-app 中封装一个全局通用的 ajax 请求函数&#xff0c;支持 Promise&#xff0c;使用 uni.request() 进行请求&#xff0c;并且具备 自动刷新 token 的功能。以下是详细步骤&#xff1a; 实现步骤 创建 request.js 统一封装 ajax 请求管理 token&#xff08;存储、获取、…...

IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程

背景&#xff1a;最近DeepSeek比较火嘛&#xff0c;然后在githup上也看到了GitHub Copilot&#xff0c;就想着现在AI的准确率已经可以提高工作效率了。所以从网上找了一些编程插件&#xff0c;发现Proxy支持的模型比较多&#xff0c;通用性和适配性比较好。所以本文记录一下pro…...

【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.1.2字段类型选择:keyword vs text、nested对象

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 第2章 数据建模与高效写入&#xff1a;ES字段类型选择最佳实践&#xff1a;keyword vs text与nested对象深度解析1. 索引设计核心原则2. keyword与text类型终极对决2.1 核心…...

【前端基础】Day 3 CSS-2

目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…...

windows电脑上安装llama-factory实现大模型微调

一、安装环境准备 这是官方给的llama-factory安装教程&#xff0c;安装 - LLaMA Factory&#xff0c;上面介绍了linux系统上以及windows系统上如何正确安装。大家依照安装步骤基本能够完成安装&#xff0c;但是可能由于缺少经验或者相关的知识导致启动webUi界面运行相应内容时…...

汽车无人驾驶系统中的防撞设计

一、系统方案介绍 无人驾驶汽车的防撞系统是保障行车安全的核心模块&#xff0c;本文设计的系统以STM32F103C8T6单片机为主控制器&#xff0c;结合超声波测距、WiFi通信、人机交互等模块&#xff0c;实现障碍物实时检测、动态阈值设置、多级报警和数据可视化功能。系统通过软…...

sql server 版本更新日期

SQL Server 2019 内部版本&#xff08;KB4518398&#xff09; - SQL Server | Microsoft Learn SQL Server 的最新更新和版本历史记录 - SQL Server | Microsoft Learn sql server 2019 版本更新时间和补丁版本号...

Linux网络 DNS

DNS(Domain Name System) TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 &#xff0c; 但是 IP 地址不方便记忆。于是人们发明了一种叫主机名的东西, 是一个字符串 , 并且使用 hosts 文件来描述主机名和 IP 地址的关系 。 最初 , 通过互连网信息中…...

EMQX中不同端口对应的接入协议

使用tcp接入时应使用mqtt://IP:1883 使用ws接入时应使用ws://IP:8083...

SpringBoot原理-03.自动配置-方案

一.自动配置原理 探究自动配置原理&#xff0c;就是探究spring是如何在运行时将要依赖JAR包提供的配置类和bean对象注入到IOC容器当中。我们当前准备一个maven项目itheima-utils&#xff0c;这里面定义了bean对象以及配置类&#xff0c;用来模拟第三方提供的依赖&#xff0c;首…...

Python 如何实现烟花效果的完整代码

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

Winbox5怎样设置上网

要让连接到交换机的设备都能上网&#xff0c;需在MikroTik路由器&#xff08;通过WinBox配置&#xff09;上完成以下步骤。假设您的网络拓扑是&#xff1a;外网IP配置在路由器的WAN口&#xff0c;内网设备通过交换机连接到路由器的LAN口。 步骤 1&#xff1a;配置内网接口&…...

(KTransformers) RTX4090单卡运行 DeepSeek-R1 671B

安装环境为&#xff1a;ubuntu 22.04 x86_64 下载模型 编辑文件vim url.list 写入如下内容 https://modelscope.cn/models/unsloth/DeepSeek-R1-GGUF/resolve/master/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf https://modelscope.cn/models/unsloth/Dee…...

【软考-架构】1.2、指令系统-存储系统-cache

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 指令系统 计算机指令执行过程&#xff1a;取指令一一分析指令一一执行指令三个步骤&#xff0c;首先将程序计数器PC中的指令地址取出&#xff0c;送入地址总线&#xff0c;CPU依据…...

CI/CD与容器化技术核心知识点的QA

CI/CD与容器化技术核心知识点的Q&A 以下是CI/CD和容器化技术的经典必考面试题及详解,结合行业实践与理论核心整理而成: 一、CI/CD核心概念与流程 简述CI/CD的核心目标与实现价值 答案:通过自动化流水线实现快速、可靠的软件交付,减少人工干预,提升开发与运维协作效率…...

动态规划刷题

文章目录 动态规划三步问题题目解析代码 动态规划 1. 状态表示&#xff1a;dp[i]&#xff0c;表示dp表中i下标位置的值 2. 状态转移方程&#xff1a;以i位置位置的状态&#xff0c;最近的一步来划分问题&#xff0c;比如可以将状态拆分成前状态来表示现状态&#xff0c;dp[i] …...

不谓侠--记录

音乐《不谓侠》 衣襟上 别好了晚霞 余晖送我牵匹老马 正路过 烟村里人家 恰似当年故里正飞花 醉过风 喝过茶 寻常巷口寻个酒家 在座皆算老友 碗底便是天涯 天涯远 无处不为家 蓬门自我也像广厦 论意气 不计多或寡 占三分便敢自称为侠 刀可捉 拳也耍 偶尔闲来…...

2025-03-01 学习记录--C/C++-C语言 整数类型对比

C语言 整数类型对比 类型位数范围&#xff08;有符号&#xff09;范围&#xff08;无符号&#xff09;格式化符号char8-128 到 1270 到 255%c 或 %hhdshort16-32,768 到 32,7670 到 65,535%hdint32-2,147,483,648 到 2,147,483,6470 到 4,294,967,295%dlong32 或 64-2,147,483…...

Python核心技术,Django学习基础入门教程(附环境安装包)

文章目录 前言1. 环境准备1.1Python安装1.2选择Python开发环境1.3 创建虚拟环境1.4 安装 Django 2. 创建 Django 项目3. Django项目结构介绍4. 启动开发服务器5. 创建 Django 应用6. 应用结构介绍7. 编写视图函数8. 配置 URL 映射9. 运行项目并访问视图10. 数据库配置与模型创建…...

MFC中CMutex类和CSingleLock类,配合使用疑惑

在使用CMutex过程中&#xff0c;看到别人使用了CSingleLock类&#xff0c;想着明明CMutex已经可以实现线程同步了&#xff0c;为什么还有使用CSingleLock类呢&#xff1f; 在MFC中&#xff0c;虽然CMutex类本身可以实现线程同步&#xff0c;但通常会与CSingleLock类一起使用&am…...

爬虫系列之【数据解析之正则】《二》

目录 前言 一、正则基本使用 1.1 导包 1.2 接口方法 1.3 换行匹配问题 二、实战案例 完整代码 前言 在爬虫工作中&#xff0c;我们主要会遇到两种类型的文本数据&#xff1a; JSON格式数据 HTML文档数据 对于JSON字符串数据&#xff0c;通常使用Python的字典操作进行键…...

HTML AI 编程助手

HTML AI 编程助手 引言 随着人工智能技术的飞速发展&#xff0c;编程领域也迎来了新的变革。HTML&#xff0c;作为网页制作的基础语言&#xff0c;与AI技术的结合&#xff0c;为开发者带来了前所未有的便利。本文将探讨HTML AI编程助手的功能、应用场景以及如何利用它提高编程…...

RFID工具柜DW-G104R|智能存储,便捷高效

一、行业背景 RFID智能工具柜&#xff08;DW-G104R&#xff09;RFID工具管理柜是一种结合RFID技术和智能柜设备的新型工具管理设施&#xff0c;通过自动化管理可以提高工具管理的效率和准确性。 在工业生产中&#xff0c;工具柜是工具存储和管理的重要设备。传统工具柜存在管…...