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

专业的网站设计师米能花型设计师服务平台

专业的网站设计师,米能花型设计师服务平台,上海建筑设计院官网,汽车4s店网站建设策划文章目录 1.问题2.filesystem3.示例参考文献 1.问题 C 如何向指定路径的文件写入内容呢? 这里有几点要求: 如果目录不存在需要自动创建。如果文件不存在需要自动创建。以覆盖的方式写入内容。 2.filesystem C17 带来了一个新的库:filesy…

文章目录

  • 1.问题
  • 2.filesystem
  • 3.示例
  • 参考文献

1.问题

C++ 如何向指定路径的文件写入内容呢?

这里有几点要求:

  1. 如果目录不存在需要自动创建。
  2. 如果文件不存在需要自动创建。
  3. 以覆盖的方式写入内容。

2.filesystem

C++17 带来了一个新的库:filesystem。

filesystem 是一个文件系统库,前身是 boost.filesystem,用于实现跨平台的文件处理。

文件系统库 filesystem 定义在头文件<filesystem>,命名空间为 std::filesystem。

以下是常用类:

  1. path 类:该类表示一个路径,对字符串(路径)进行一些处理,如路径拼接、分解、获取文件名等操作。
  2. directory_entry 类:功如其名,目录条目,这个类才真正接触文件。
  3. directory_iterator 类:获取文件系统目录中文件的迭代器容器,其元素为 directory_entry 对象,可用于遍历目录。
  4. recursive_directory_iterator 类:与 directory_iterator 类似,但它可以递归遍历目录及其子目录中的条目。
  5. file_status 类:用于获取和修改文件(或目录)的属性。
  6. filesystem_error 类:用于处理文件系统操作中的异常情况的异常类。
  7. 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

http://www.yayakq.cn/news/980782/

相关文章:

  • 上海做网站seo企业网d1net的功能
  • 肇庆市专注网站建设平台国内软件上市公司排行榜
  • 网站官网建设成品网站1688入门网
  • 南宁在那里推广网站wordpress页面视频播放器
  • 网站怎么在移动端推广苏州建站方法
  • 网站建设优化服务方案模板足球世界排名一览表
  • 网站访问量什么意思南川网站制作
  • 成都个人网站开发wordpress删除版权信息
  • 毕业设计购物网站怎么做什么公司能做网站建设
  • 做旅游网站的写手做网站常用的小语种有哪些
  • 哪个做企业网站问答 WordPress
  • 罗村建网站品牌宣传策略有哪些
  • 长春网站建设phpjz公共交通公司网站建设方案
  • 湖州网站建设服务公司产品外观设计用什么软件
  • 免费网站制作成品h5页面制作软件电脑版
  • 网站建设有哪些岗位电商是什么一般是干嘛的
  • 广东工厂网站建设wordpress建站站长之家
  • 石家庄网站建设兼职网站制作q
  • 好利蛋糕店官方网站网站域名商代理商
  • wordpress改论坛鞍山seo公司
  • 深圳优化网站排名十大销售管理软件排行榜
  • 天津网站建设方案策划南宁网站建设设计
  • 企业网站优化与推广php网站建立教程
  • 重庆做网站的公司有哪些晋江网站设计泉州名扬专业
  • 网站推广策略的主要方式北京模板建站哪家好
  • 08 iis创建网站wordpress start
  • 网站备案拍照点网站设计毕业设计任务书
  • 汕头网站优化哪家好安徽省建设工程质量协会网站
  • 房产中介网站开发模板微商城开发lk华网天下价格合适
  • 小程序网站百度营销搜索推广