Huy*_* Le 6 c++ filesystems ubuntu file filepath
#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;
}
Run Code Online (Sandbox Code Playgroud)
我需要将一些日志数据输出到一些具有变量名称的文件中。但是,ofstream不会一路创建目录,如果文件的路径不存在,则不会ofstream写入任何地方!
如何沿着文件路径自动创建文件夹?系统只有Ubuntu。
您可以使用此函数 ( CreateDirectoryRecursive) 来实现此目的,如下所示。
它使用std::filesystem::create_directories和std::filesystem::exists。
#include <string>
#include <filesystem>
// Returns:
// true upon success.
// false upon failure, and set the std::error_code & err accordingly.
bool CreateDirectoryRecursive(std::string const & dirName, std::error_code & err)
{
err.clear();
if (!std::filesystem::create_directories(dirName, err))
{
if (std::filesystem::exists(dirName))
{
// The folder already exists:
err.clear();
return true;
}
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
使用示例:
#include <iostream>
int main()
{
std::error_code err;
if (!CreateDirectoryRecursive("/tmp/a/b/c", err))
{
// Report the error:
std::cout << "CreateDirectoryRecursive FAILED, err: " << err.message() << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
笔记:
<filesystem>自 c++-17 起可用。
在此之前,它可以通过标头在许多编译器中使用<experimental/filesystem>。
| 归档时间: |
|
| 查看次数: |
12344 次 |
| 最近记录: |