最終更新日時:
が更新

履歴 編集

function
<filesystem>

std::filesystem::operator==(C++17)

namespace std::filesystem {
  bool operator==(const directory_iterator& a, const directory_iterator& b) noexcept; // (1) C++17

  class directory_iterator {
  public:
    bool operator==(default_sentinel_t) const noexcept; // (2) C++23
  };
}

概要

directory_iteratorオブジェクトが等値かを判定する。

  • (1) : 2つのdirectory_iteratorオブジェクトを等値比較する。
  • (2) : directory_iteratorオブジェクトが終端(ディレクトリの末尾)に到達しているかを判定する。

戻り値

  • (1) : 2つのdirectory_iteratorオブジェクトが等値である場合はtrue、そうでなければfalseを返す。
  • (2) : *this == directory_iterator()と等価。すなわち、イテレータが終端を指していればtrue、そうでなければfalseを返す。

#include <cassert>
#include <filesystem>
#include <fstream>
#include <iterator>

namespace fs = std::filesystem;

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

  fs::directory_iterator a{"dir"};
  fs::directory_iterator b = a;

  // (1) 2つのイテレータの等値比較
  assert(a == b);

  ++b;

  // (1) デフォルト構築したイテレータ(終端)との比較
  fs::directory_iterator end{};
  assert(b == end);

  // (2) default_sentinelとの比較で終端を判定する (C++23)
  assert(b == std::default_sentinel);
}

出力

バージョン

言語

  • C++17

処理系

参照