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

FreeBSD Manual Pages

  
 
  

home | help
std::basic_filebuf::open(3)   C++ Standard Libary  std::basic_filebuf::open(3)

NAME
       std::basic_filebuf::open	- std::basic_filebuf::open

Synopsis
	  std::basic_filebuf<CharT,    Traits>*	   open(    const   char*   s,
       (1)
	  std::ios_base::openmode mode )
	  std::basic_filebuf<CharT, Traits>*  open(  const  std::string&  str,
       (2) (since C++11)
	  std::ios_base::openmode mode )
	  std::basic_filebuf<CharT, Traits>* open( const
	  std::filesystem::path&					    p,
       (3) (since C++17)
	  std::ios_base::openmode mode )
	  std::basic_filebuf<CharT, Traits>* open( const
	  std::filesystem::path::value_type*				    s,
       (4) (since C++17)
	  std::ios_base::openmode mode )

	  Opens	the file with the given	name (s
	  , p.c_str()
	  (since  C++17)  or str.c_str(), depending on the overload). openmode
       values may be
	  written as, e.g., std::ios::out|std::ios::app.

	  Overload (4) is only provided	 if  std::filesystem::path::value_type
       is  (since C++17)
	  not char.

	  The file is opened as	if by calling std::fopen with the second argu-
       ment (mode)
	  determined as	follows:

	  mode		 openmode & ~ate	  Action if file already   Ac-
       tion if file does
							 exists
       not exist
	  "r"	in				 Read from start	 Fail-
       ure to open
	  "w"	out, out|trunc			 Destroy contents	  Cre-
       ate new
	  "a"	 app, out|app			  Append to file	  Cre-
       ate new
	  "r+"	out|in				 Read from start	 Error
	  "w+"	out|in|trunc			 Destroy contents	  Cre-
       ate new
	  "a+"	 out|in|app, in|app		  Write	to end		  Cre-
       ate new
	  "rb"	binary|in			 Read from start	 Fail-
       ure to open
	  "wb"	binary|out, binary|out|trunc	 Destroy contents	  Cre-
       ate new
	  "ab"	 binary|app, binary|out|app	  Write	to end		  Cre-
       ate new
	  "r+b"	binary|out|in			 Read from start	 Error
	  "w+b"	binary|out|in|trunc		 Destroy contents	  Cre-
       ate new
	  "a+b"	 binary|out|in|app, binary|in|app Write	to end		  Cre-
       ate new

	  If openmode is not one of the	modes listed, the open() fails.

	  If the open operation	succeeds and openmode &	std::ios_base::ate  !=
       0 (the ate bit
	  is  set), repositions	the file position to the end of	file, as if by
       calling
	  std::fseek(file, 0, SEEK_END), where file is the pointer returned by
       calling fopen.
	  If the repositioning fails, calls close() and	returns	a null pointer
       to indicate
	  failure.

	  If the associated file was already  open,  returns  a	 null  pointer
       right away.

Parameters
	  s, str, p - the file name to open; s must point to a null-terminated
       string
	  openmode   - the file	opening	mode, a	binary OR of the std::ios_base
       modes

Return value
	  this on success, a null pointer on failure.

Notes
	  open() is typically called through the  constructor  or  the	open()
       member function of
	  std::basic_fstream.

Example
       // Run this code

	#include <fstream>
	#include <iostream>

	int main() {
	  std::string filename = "Test.b";
	  std::filebuf fb;
	  // prepare a file to read
	  double d = 3.14;
	  if (!fb.open(filename, std::ios::binary|std::ios::out)) {
	    std::cout << "Open file " << filename << " for write failed\n";
	    return 1;
	  }
	  fb.sputn(reinterpret_cast<char*>(&d),	sizeof d);
	  fb.close();

	  // open file for reading
	  double d2 = 0.0;
	  if (!fb.open(filename, std::ios::binary|std::ios::in)) {
	    std::cout << "Open file " << filename << " for read	failed\n";
	    return 1;
	  }
	  auto got = fb.sgetn(reinterpret_cast<char*>(&d2), sizeof d2);
	  if (sizeof(d2) != got) {
	    std::cout << "Read of " << filename	<< " failed\n";
	  } else {
	    std::cout << "Read back from file: " << d2 << '\n';
	  }
	}

Output:
	Read back from file: 3.14

See also
	  is_open checks if the	associated file	is open
		  (public member function)
	  close	  flushes the put area buffer and closes the associated	file
		  (public member function)

http://cppreference.com		  2022.07.31	   std::basic_filebuf::open(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::wfilebuf::open&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help