Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::filesystem::path::compare

      From cppreference.com
      <cpp‎ |filesystem‎ |path
       
       
      Filesystem library
      Classes
      Functions
      File types
       
      std::filesystem::path
      Member types
      Member constants
      Member functions
      Path decomposition
      Non-member functions
      (until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20)
      Helper classes
       
      int compare(const path& p)constnoexcept;
      (1)(since C++17)
      int compare(const string_type& str)const;
      int compare(std::basic_string_view<value_type> str)const;
      (2)(since C++17)
      int compare(const value_type* s)const;
      (3)(since C++17)

      Compares the lexical representations of the path and another path.

      1) Ifroot_name().native().compare(p.root_name().native()) is nonzero, returns that value.
      Otherwise, ifhas_root_directory()!= p.has_root_directory(), returns a value less than zero ifhas_root_directory() isfalse and a value greater than zero otherwise.
      Otherwise returns a value less than, equal to or greater than0 if the relative portion of the path (relative_path()) is respectively lexicographically less than, equal to or greater than the relative portion ofp (p.relative_path()). Comparison is performed element-wise, as if by iterating both paths frombegin() toend() and comparing the result ofnative() for each element.
      2) Equivalent tocompare(path(str)).
      3) Equivalent tocompare(path(s)).

      Contents

      [edit]Parameters

      p - a path to compare to
      str - a string or string view representing path to compare to
      s - a null-terminated string representing path to compare to

      [edit]Return value

      A value less than0 if the path is lexicographically less than the given path.

      A value equal to0 if the path is lexicographically equal to the given path.

      A value greater than0 if the path is lexicographically greater than the given path.

      [edit]Exceptions

      2,3) May throw implementation-defined exceptions.

      [edit]Notes

      For two-way comparisons,binary operators may be more suitable.

      [edit]Example

      Run this code
      #include <filesystem>#include <iostream>#include <string_view>namespace fs= std::filesystem; void demo(fs::path p1, fs::path p2,std::string_view msg){std::cout<< p1;constint rc= p1.compare(p2);if(rc<0)std::cout<<" < ";elseif(rc>0)std::cout<<" > ";elsestd::cout<<" == ";std::cout<< p2<<"\t: "<< msg<<'\n';} int main(){    demo("/a/b/","/a/b/","simple");    demo("/a/b/","/a/b/c","simple");    demo("/a/b/../b","/a/b","no canonical conversion");    demo("/a/b","/a/b/.","no canonical conversion");    demo("/a/b/","a/c","absolute paths order after relative ones");}

      Output:

      "/a/b/" == "/a/b/"      : simple"/a/b/" < "/a/b/c": simple"/a/b/../b" > "/a/b": no canonical conversion"/a/b" < "/a/b/.": no canonical conversion"/a/b/" > "a/c"        : absolute paths order after relative ones

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 2936C++17compared all path elements directlyroot name and root directory handled separately

      [edit]See also

      (C++17)(C++17)(until C++20)(C++17)(until C++20)(C++17)(until C++20)(C++17)(until C++20)(C++17)(until C++20)(C++20)
      lexicographically compares two paths
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/filesystem/path/compare&oldid=158016"

      [8]ページ先頭

      ©2009-2025 Movatter.jp