最終更新日時(UTC):
が更新

履歴 編集

function
<filesystem>

std::filesystem::create_directories(C++17)

namespace std::filesystem {
  bool create_directories(const path& p);                      // (1)
  bool create_directories(const path& p, std::error_code& ec); // (2)
}

概要

ディレクトリ階層を作成する。

create_directory()関数は、指定されたパスの単一ディレクトリを作成するが、間のディレクトリが存在しない場合はエラーとなる。この関数は、間のディレクトリも作成する。

効果

  • パスpに含まれるディレクトリのうち、存在しないディレクトリを全て作成する

戻り値

  • (1) : 新たなディレクトリが作成されたらtrue、されなければfalseが返る
  • (2) : 新たなディレクトリが作成されたらtrue、されなければfalseが返る。エラーが発生した場合もfalseが返る

例外

  • (1) : ファイルシステムがエラーを報告する場合がある。エラーが発生した場合は、std::filesystem::filesystem_error例外を送出する
  • (2) : ディレクトリを走査する際にメモリ確保に失敗した場合、例外を送出する可能性がある

#include <cassert>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
  bool result = fs::create_directories("a/b/c");

  assert(result);
  assert(fs::exists("a/b/c"));
  assert(fs::is_directory("a/b/c"));

  // すでに存在するディレクトリを指定した場合、falseは返るがエラーにはならない
  bool result2 = fs::create_directories("a/b/c");
  assert(!result2);
}

出力

バージョン

言語

  • C++17

処理系

参照