相关文章推荐
爱吹牛的稀饭  ·  如何列举Bucket的所有文件、指定前缀的文 ...·  1 月前    · 
文武双全的围巾  ·  【转载】Mock入门 - 箐茗 - 博客园·  1 年前    · 
孤独的火龙果  ·  MySQL小表驱动大表 - 秦羽的思考 - 博客园·  1 年前    · 
刀枪不入的青椒  ·  从零开始使用JavaScript编写数据表格 ...·  2 年前    · 
非常酷的风衣  ·  [Day09]Pandas索引的運用! - ...·  2 年前    · 
含蓄的米饭  ·  c# - SetConsoleMode ...·  2 年前    · 
Code  ›  C++ 创建文件并写入内容开发者社区
c++ 文件目录
https://cloud.tencent.com/developer/article/2339242
卖萌的煎鸡蛋
1 年前
恋喵大鲤鱼

C++ 创建文件并写入内容

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
恋喵大鲤鱼
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > C++ 创建文件并写入内容

C++ 创建文件并写入内容

作者头像
恋喵大鲤鱼
发布 于 2023-10-12 16:17:02
316 0
发布 于 2023-10-12 16:17:02
举报
文章被收录于专栏: C/C++基础 C/C++基础

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;
 
推荐文章
爱吹牛的稀饭  ·  如何列举Bucket的所有文件、指定前缀的文件、指定目录下的文件和子目录?_对象存储(OSS)-阿里云帮助中心
1 月前
文武双全的围巾  ·  【转载】Mock入门 - 箐茗 - 博客园
1 年前
孤独的火龙果  ·  MySQL小表驱动大表 - 秦羽的思考 - 博客园
1 年前
刀枪不入的青椒  ·  从零开始使用JavaScript编写数据表格控件(转载) - ronald_han - 博客园
2 年前
非常酷的风衣  ·  [Day09]Pandas索引的運用! - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
2 年前
含蓄的米饭  ·  c# - SetConsoleMode fails with zero, lasterror = 0 - Stack Overflow
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号