C++ 创建文件并写入内容
文章目录
- 1.问题
- 2.filesystem
- 3.示例
- 参考文献
1.问题
C++ 如何向指定路径的文件写入内容呢?
这里有几点要求:
- 如果目录不存在需要自动创建。
- 如果文件不存在需要自动创建。
- 以覆盖的方式写入内容。
2.filesystem
C++17 带来了一个新的库:filesystem。
filesystem 是一个文件系统库,前身是 boost.filesystem,用于实现跨平台的文件处理。
文件系统库 filesystem 定义在头文件<filesystem>,命名空间为 std::filesystem。
以下是常用类:
- path 类:该类表示一个路径,对字符串(路径)进行一些处理,如路径拼接、分解、获取文件名等操作。
- directory_entry 类:功如其名,目录条目,这个类才真正接触文件。
- directory_iterator 类:获取文件系统目录中文件的迭代器容器,其元素为 directory_entry 对象,可用于遍历目录。
- recursive_directory_iterator 类:与 directory_iterator 类似,但它可以递归遍历目录及其子目录中的条目。
- file_status 类:用于获取和修改文件(或目录)的属性。
- filesystem_error 类:用于处理文件系统操作中的异常情况的异常类。
- file_type 类:表示文件的类型,包括正常文件、目录、符号链接等。它通常与std::filesystem::status()函数一起使用来获取文件的类型。
此外,还有 space_info、perms、perm_options 等类的说明,可在 cppreference.com 查看。
3.示例
下面演示利用 filesystem 实现自动创建目录与文件,并覆盖写入。
#include <ios>
#include <fstream>
#include <filesystem>// 将内容以覆盖的方式写入文件,如果文件不存在,则自动创建。
void flushResult(const std::string filepath, const std::string data) {// 获取文件所在目录的路径。std::filesystem::path dirPath = std::filesystem::path(filepath).parent_path();// 创建目录(如果目录不存在)。if (!dirPath.empty()) {if (!std::filesystem::exists(dirPath)) {std::filesystem::create_directories(dirPath);}}// 打开文件,如果文件不存在则创建。std::ofstream outputFile(filepath, std::ios::out | std::ios::trunc);outputFile << data;outputFile.close();
}
在创建目录前需要判断目录 path 是否为空:
path::empty() // 检查路径是否为空
如果传入的文件路径只包含文件名,那么调用 filesystem::create_directories 传入空的目录 path 将引发异常。
下面在 Windows 环境测试一下。
int main() {flushResult(".\\dir1\\dir2\\lvlv.json", "{\"hell\":\"world\"}");
}
注意,Windows 目录中的反斜杠需要转义,JOSN 中的双引号也需要转义。或者使用 C++11 原生字符串。
int main() {flushResult(R"(.\dir1\dir2\lvlv.json)", R"({"hell":"world"})");
}
编译运行上面的 main() 函数,将在当前工作目录下创建.\dir1\di2\lvlv.json文件并写入{"hell":"world"}。
参考文献
Filesystem library (since C++17) - cppreference.com
相关文章:
C++ 创建文件并写入内容
文章目录 1.问题2.filesystem3.示例参考文献 1.问题 C 如何向指定路径的文件写入内容呢? 这里有几点要求: 如果目录不存在需要自动创建。如果文件不存在需要自动创建。以覆盖的方式写入内容。 2.filesystem C17 带来了一个新的库:filesy…...
微信小程序rich-text里面写多行溢出显示省略号在ios中不显示的问题
问题:微信小程序rich-text里面写多行溢出显示省略号在ios中不显示的问题 解决方法:需要给一个默认的div标签,在div写行内样式 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-o…...
解决Win11/10中Edge浏览器页面加载不出来、打不开问题|有网但是打不开,加载不了
问题症状 edge浏览器打不开,有网络能正常上网,但是edge浏览器无法浏览。网络质量很高,但是页面就是加载不出来,详情如下: (我是在科学上网后造成这样子的原因,现在将我的方法分享一下ÿ…...
【DRAM存储器五】DRAM存储器的架构演进-part2
👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考书籍:《Memory Systems - Cache, DRAM, Disk》 目录 以提升吞吐…...
分享一个基于uniapp+springboot技术开发的校园失物招领小程序(源码、lw、调试)
💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…...
RabbitMQ工作模式——Routing路由模式
1.Routing路由模式 Routing生产者代码 public class Producer_Routing {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.…...
Python字典的增删改查以及嵌套
嗨喽,大家好呀~这里是爱看美女的茜茜呐 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可 字典 基础数…...
【淘宝开店】新手入门开网店教程
一、上架产品流程顺序 1. 上架10个产品2. 早中晚各上架1件产品3. 连续上架4天 二、产品培训 动销率要求: 店铺产品数必须>10公式: 店铺最近30天有销量产品数 / 店铺上架总产品数 * 100%1. 从动销率可以得出, 店铺产品不宜过多2. 小卖家前期最佳建议产品数10个 三、上架产品…...
计网第五章(运输层)(五)(TCP拥塞控制)
目录 一、基本概念 二、拥塞控制算法 慢开始: 拥塞避免: 快重传: 快恢复: 一、基本概念 若对网络中某一资源的需求超过了该资源所能提供的可用部分(供不应求),网络性能就会变坏。 在计算…...
windows/ubuntu怎么修改hosts文件
windows系统修改方法: 第一步:用管理员权限打开记事本,或者visual studio。 第二步:用记事本或者vs打开地址C:\Windows\System32\drivers\etc\hosts文件,这个时候就可以直接修改了 Ubuntu22 LTS系统修改方法…...
(日积月累版)大数据基础知识点1-关系型数据库
好久不见,甚是想念。 笔者最近有时间整理关于大数据的一些基础知识点,整理的目不在于能提升多少技能,关键在于巩固一些很基础的知识点,毕竟互联网就是基础略稳固的人比较有优势,在遇到或发现一些技术问题时,…...
【开心消消乐】python实现-附ChatGPT解析
1.题目 开心消消乐 知识点编程基础:深搜、广搜 时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 给定一个N行M列的二维矩阵,矩阵中每个位置的数宁取值为0或1。矩阵示例如: 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 现需要将矩阵中所有的1进行反转为0,规则如下: 1)、当点击一…...
springBoot源码汇总
SpringFactoriesLoader 示例位置 SpringApplication#getSpringFactoriesInstances 加载spring.factroies下的初始化类 ClassLoader classLoader this.getClassLoader();Set<String> names new LinkedHashSet(SpringFactoriesLoader.loadFactoryNames(type, classLoade…...
代码随想录二刷day39
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣62. 不同路径二、力扣63. 不同路径 II 前言 一、力扣62. 不同路径 class Solution {public int uniquePaths(int m, int n) {int[][] dp new int[m][…...
Spring面试题7:面试官:Spring是如何进行异常处理的呢?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring是如何进行异常处理的呢? Spring通过异常处理机制来处理应用程序中的异常。它提供了多种方式来处理异常,包括以下几种: 声明式事务管理:…...
华为云云耀云服务器L实例评测|搭建您的私人影院网站
前言 本文为华为云云耀云服务器L实例测评文章,测评内容是云耀云服务器L实例搭建在线视频网站,大家可以将这个网站作为私人影院或是分享给朋友,但是尽量不要更广的传播,因为这涉及到版权问题 系统配置:华为云 2核2G 3M…...
Solidity 小白教程:22. Call
Solidity 小白教程:22. Call 这一讲我们将介绍如何利用 Call 调用合约。 Call call 是address类型的低级成员函数,它用来与其他合约交互。它的返回值为**(bool, data),分别对应call**是否成功以及目标函数的返回值。 call是solidity官方推…...
mySQL 安装
一、windows安装包下载 mysql官网提供了两种安装方式,一个是zip安装,另一个是msi安装,这里简绍第一种安装方式,第二种简单,不再简绍 官网下载,根据自己需要选择版本:MySQL :: MySQL Community…...
涛然自得周刊(第 10 期):搬到海岛生活是一种什么体验
作者:何一涛 日期:2023 年 9 月 24 日 涛然自得周刊主要精选作者阅读过的书影音内容,周末发布。历史周刊内容可以看这里。 影音 《德雷尔一家》是一部根据书籍《希腊三部曲》改编的英剧,共 4 季,每一季豆瓣评分都超…...
pycharm中恢复原始界面布局_常用快捷键_常用设置
文章目录 1 恢复默认布局1 .1直接点击file→Manage IDE Settings→Restore Default Settings(如下图所示):1.2 直接点击Restore and Restart, 然后Pycharm就会自动重启,重启之后的界面就是最原始的界面了 2 改变主题2.…...
VTJ.PRO 在线应用开发平台的项目模板(Web、H5、UniApp)
项目模板(Web、H5、UniApp) 本文档详细介绍了 VTJ.PRO 平台用于初始化新应用的启动项目模板。这些模板提供了必要的运行时环境、配置以及与 VTJ 引擎的集成,使低代码应用能够作为独立项目运行。 模板概述 该平台维护了三个不同的启动模板&a…...
iOS工程师核心技术深度解析:音视频、Runtime、网络与并发实战
摘要: 本文深入探讨现代iOS工程师所需的核心技术栈,特别是围绕音视频处理、Objective-C Runtime机制、TCP/IP网络协议栈、多线程并发编程等关键领域。结合招聘岗位职责,详细剖析技术原理、最佳实践、性能优化策略及面试考察要点,旨在为开发者提供全面的技术提升路径和面试准…...
开源番茄小说下载工具:让数字阅读摆脱平台依赖的完整方案
开源番茄小说下载工具:让数字阅读摆脱平台依赖的完整方案 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 当你在通勤途中想继续阅读昨晚未看完的小说,却发现网络信号…...
2026届最火的AI写作助手解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有效地削弱文本所表现出的机器生成特征,是降低AIGC率的核心要点所在。其一&…...
如何使用Everything Claude Code的Nutrient API实现智能文档处理:10个核心功能详解
如何使用Everything Claude Code的Nutrient API实现智能文档处理:10个核心功能详解 【免费下载链接】everything-claude-code The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claud…...
云容笔谈·东方红颜与MATLAB联调:利用科学计算环境进行图像效果分析与优化
云容笔谈东方红颜与MATLAB联调:利用科学计算环境进行图像效果分析与优化 最近在尝试用“云容笔谈东方红颜”这类AI绘画工具生成一些特定风格的图像,效果确实挺惊艳的。但作为一个有点“数据控”倾向的人,我总在想:除了肉眼观察&a…...
BetterNCM Installer完整指南:三步打造个性化网易云音乐工作站
BetterNCM Installer完整指南:三步打造个性化网易云音乐工作站 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐的功能限制感到困扰吗?BetterNC…...
Nginx何以征服高性能之巅?深入剖析其架构设计哲学
前言 在现代互联网的星辰大海中,Nginx无疑是一艘性能卓越的航母。它轻松应对着每秒数十万计的并发请求,成为全球众多高流量网站(如Netflix、知乎、豆瓣等)不可或缺的基础组件。许多人将其高性能归功于某项“黑科技”,但事实上,Nginx的高性能是其深邃的架构设计哲学与一系…...
终极FastAPI环境变量配置指南:从基础到高级的完整实现
终极FastAPI环境变量配置指南:从基础到高级的完整实现 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 想要构建高效、可维护…...
Wan2.2-I2V-A14B实操手册:WebUI中ControlNet风格控制与运动强度调节
Wan2.2-I2V-A14B实操手册:WebUI中ControlNet风格控制与运动强度调节 1. 环境准备与快速部署 在开始探索Wan2.2-I2V-A14B的强大功能前,我们需要确保环境已正确部署。本镜像已针对RTX 4090D 24GB显卡进行深度优化,开箱即用。 1.1 一键启动We…...
