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

履歴 編集

function
<filesystem>

std::filesystem::recursive_directory_iterator::pop(C++17)

void pop();
void pop(std::error_code& ec);

概要

そのディレクトリの走査を中断する。

戻り値

depth() == 0の場合は、*thisに終端イテレータを代入する。そうでない場合は、そのディレクトリの走査を終了し、親ディレクトリに戻る。

事後条件

  • *thisのそれまでのあらゆるコピーは、==のドメインにおいて間接参照であることが要求されなくなる

#include <iostream>
#include <filesystem>
#include <fstream>

namespace fs = std::filesystem;

int main()
{
  fs::create_directory("dir");
  std::ofstream{"dir/a.txt"};
  fs::create_directory("dir/inner_dir");
  std::ofstream{"dir/inner_dir/b.txt"};

  fs::recursive_directory_iterator it{"dir"};
  fs::recursive_directory_iterator last{};
  for (; it != last; ++it) {
    // エラーが発生したと想定し、inner_dirディレクトリの走査を中断する
    if (it->path().filename() == "b.txt") {
      it.pop(); // 親ディレクトリを指す (continueしてはいけない)
    }

    std::cout << it->path() << " : " << it.depth() << std::endl;
  }
}

出力

"dir/inner_dir" : 0
"dir/a.txt" : 0

バージョン

言語

  • C++17

処理系

参照