Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::experimental::filesystem::equivalent

      From cppreference.com
      <cpp‎ |experimental‎ |fs
       
       
       
      Filesystem library
      Classes
      Functions
      File types
       
      Defined in header<experimental/filesystem>
      bool equivalent(const path& p1,const path& p2);
      bool equivalent(const path& p1,const path& p2, error_code& ec);
      (1)(filesystem TS)

      Checks whether the pathsp1 andp2 refer to the same file or directory and have the same file status as determined bystatus (symlinks are followed).

      Ifp1 orp2 does not exist or if their file type is not file, directory, or symlink (as determined byis_other), an error is reported.

      The non-throwing overload returnsfalse on errors.

      Contents

      [edit]Parameters

      p1, p2 - paths to check for equivalence
      ec - out-parameter for error reporting in the non-throwing overload

      [edit]Return value

      true if thep1 andp2 refer to the same file or directory and their file status is the same.false otherwise.

      [edit]Exceptions

      The overload that does not take anerror_code& parameter throwsfilesystem_error on underlying OS API errors, constructed withp1 as the first argument,p2 as the second argument, and the OS error code as the error code argument.std::bad_alloc may be thrown if memory allocation fails. The overload taking anerror_code& parameter sets it to the OS API error code if an OS API call fails, and executesec.clear() if no errors occur. This overload has
      noexcept specification:  
      noexcept
        

      [edit]Notes

      Two paths are considered to resolve to the same file system entity ifst_dev andst_ino of their POSIXstat structure, obtained as if by POSIXstat, are equal (meaning, the files are located on the same device at the same location).

      In particular, all hard links for the same file or directory are equivalent, and a symlink and its target on the same file system are equivalent.

      [edit]Example

      Run this code
      #include <cstdint>#include <experimental/filesystem>#include <iostream>namespace fs= std::experimental::filesystem; int main(){// hard link equivalency    fs::path p1=".";    fs::path p2= fs::current_path();if(fs::equivalent(p1, p2))std::cout<< p1<<" is equivalent to "<< p2<<'\n'; // symlink equivalency    fs::path p3="/lib/libc.so.6";    fs::path p4= p3.parent_path()/ fs::read_symlink(p3);if(fs::equivalent(p3, p4))std::cout<< p3<<" is equivalent to "<< p4<<'\n';}

      Possible output:

      "." is equivalent to "/var/tmp/test""/lib/libc.so.6" is equivalent to "/lib/libc-2.12.so"

      [edit]See also

      determines file attributes
      determines file attributes, checking the symlink target
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/fs/equivalent&oldid=158744"

      [8]ページ先頭

      ©2009-2025 Movatter.jp