Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::filesy...try::assign(3)  C++ Standard Libary std::filesy...try::assign(3)

NAME
       std::filesystem::directory_entry::assign	   -   std::filesystem::direc-
       tory_entry::assign

Synopsis
	  void	   assign(     const	 std::filesystem::path&	     p	    );
       (1) (since C++17)
	  void	assign(	 const	std::filesystem::path&	p, std::error_code& ec
       (2) (since C++17)
	  );

	  Assigns new content to the directory entry object. Sets the path  to
       p and calls
	  refresh  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.

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

Return value
	  (none)

Exceptions
	  Any overload not marked noexcept may throw std::bad_alloc if	memory
       allocation
	  fails.

	  1) Throws std::filesystem::filesystem_error on underlying OS API er-
       rors, constructed
	  with p as the	first path argument and	the OS error code as the error
       code argument.
	  2)  Sets a std::error_code& parameter	to the OS API error code if an
       OS API call
	  fails, and executes ec.clear() if no errors occur.

Example
       // Run this code

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

	void print_entry_info(const std::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_direc-
       tory_path());

	    std::filesystem::directory_entry	   entry{std::filesystem::cur-
       rent_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 directory
	entry.assign();
	The entry "/tmp/cppreference.html" is a	regular	file
	remove(entry);
	The entry "/tmp/cppreference.html" is a	regular	file
	entry.assign();
	The entry "/tmp/cppreference.html" does	not exists on the file system

See also
	  operator= assigns contents
		    (public member function)

http://cppreference.com		  2024.06.10	  std::filesy...try::assign(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::filesystem::directory_entry::assign&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help