#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream fo("output/folder1/data/today/log.txt");
fo << "Hello world\n";
fo.close();
return 0;
}
我需要将一些日志数据输出到一些带有变量名的文件中。但是,ofstream
并不沿着路径创建目录,如果文件的路径不存在,ofstream
就不会写入任何地方!
我可以做什么来自动创建文件夹沿着文件路径?系统只有Ubuntu。
2条答案
按热度按时间zxlwwiss1#
您可以使用此函数(
CreateDirectoryRecursive
)来实现这一点,如下所示。它使用
std::filesystem::create_directories
和std::filesystem::exists
。用法示例:
注:
<filesystem>
从c++-17开始可用。在此之前,它可以通过
<experimental/filesystem>
头文件在许多编译器中使用。brtdzjyr2#
根据cppreference:
为
p
中不存在的每个元素创建一个目录。如果p
已经存在,则该函数不执行任何操作。如果为p
解析到的目录创建了目录,则返回true
,否则返回false
。你可以做的是:
1.获取要将文件保存到的目录路径(在示例中:
output/folder1/data/today/
)。1.获取您的文件名(
log.txt
)。1.创建(所有)文件夹。
1.使用
std::fstream
写入文件。