Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::filesystem::directory_entry::assign

      From cppreference.com
      <cpp‎ |filesystem‎ |directory entry
       
       
      Filesystem library
      Classes
      Functions
      File types
       
      std::filesystem::directory_entry
      Member functions
      Modifiers
      directory_entry::assign
      Observers
      Non-member functions
       
      void assign(conststd::filesystem::path& p);
      (1)(since C++17)
      void assign(conststd::filesystem::path& p,std::error_code& ec);
      (2)(since C++17)

      Assigns new content to the directory entry object. Sets the path top and callsrefresh to update the cached attributes. If an error occurs, the values of the cached attributes are unspecified.

      This function does not commit any changes to the filesystem.

      Contents

      [edit]Parameters

      p - path to the filesystem object to which the directory entry will refer
      ec - out-parameter for error reporting in the non-throwing overload

      [edit]Return value

      (none)

      [edit]Exceptions

      Any overload not markednoexcept may throwstd::bad_alloc if memory allocation fails.

      1) Throwsstd::filesystem::filesystem_error on underlying OS API errors, constructed withp as the first path argument and the OS error code as the error code argument.
      2) Sets astd::error_code& parameter to the OS API error code if an OS API call fails, and executesec.clear() if no errors occur.

      [edit]Example

      Run this code
      #include <filesystem>#include <fstream>#include <iostream> void print_entry_info(conststd::filesystem::directory_entry& entry){if(std::cout<<"The entry "<< entry; not entry.exists()){std::cout<<" does not exists on the file system\n";return;}std::cout<<" is ";if(entry.is_directory())std::cout<<"a directory\n";if(entry.is_regular_file())std::cout<<"a regular file\n";/*...*/} int main(){std::filesystem::current_path(std::filesystem::temp_directory_path()); std::filesystem::directory_entry entry{std::filesystem::current_path()};    print_entry_info(entry); std::filesystem::path name{"cppreference.html"};std::ofstream{name}<<"C++"; std::cout<<"entry.assign();\n";    entry.assign(entry/name);    print_entry_info(entry); std::cout<<"remove(entry);\n";std::filesystem::remove(entry);    print_entry_info(entry);// the entry still contains old "state" std::cout<<"entry.assign();\n";    entry.assign(entry);// or just call entry.refresh()    print_entry_info(entry);}

      Possible output:

      The entry "/tmp" is a directoryentry.assign();The entry "/tmp/cppreference.html" is a regular fileremove(entry);The entry "/tmp/cppreference.html" is a regular fileentry.assign();The entry "/tmp/cppreference.html" does not exists on the file system

      [edit]See also

      assigns contents
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/filesystem/directory_entry/assign&oldid=158088"

      [8]ページ先頭

      ©2009-2025 Movatter.jp