home | help
std::basic_istream::sync(3)    C++ Standard Libary   std::basic_istream::sync(3)

NAME
     std::basic_istream::sync - std::basic_istream::sync

Synopsis
	int sync();

	Synchronizes the input buffer with the associated data source.

	Behaves  as  UnformattedInputFunction,	except	that gcount() is not af-
     fected. After
	constructing and checking the sentry object,

	If rdbuf() is a null pointer, returns -1.

	Otherwise, calls rdbuf()->pubsync(). If that function returns -1, calls
	setstate(badbit) and returns -1. Otherwise, returns 0.

Parameters
	(none)

Return value
	0 on success, -1 on failure or if the stream does not support this oper-
     ation (is
	unbuffered).

Notes
	As with readsome(), it is implementation-defined whether  this	function
     does anything
	with library-supplied streams. The intent is typically for the next read
     operation
	to  pick  up any changes that may have been made to the associated input
     sequence
	after the stream buffer last filled  its  get  area.  To  achieve  that,
     sync() may empty
	the  get  area, or it may refill it, or it may do nothing. A notable ex-
     ception is
	Visual Studio, where this operation discards the unprocessed input  when
     called with
	a standard input stream.

Example
	Demonstrates  the  use of input stream sync() with file input. Note that
     output here
	is implementation-defined, since calls to std::basic_filebuf::sync are
	implementation-defined for reads.

     // Run this code

      #include <fstream>
      #include <iostream>

      void file_abc()
      {
	  std::ofstream f("test.txt");
	  f << "abc\n";
      }

      void file_123()
      {
	  std::ofstream f("test.txt");
	  f << "123\n";
      }

      int main()
      {
	  file_abc(); // file now contains "abc"
	  std::ifstream f("test.txt");
	  std::cout << "Reading from the file\n";
	  char c;
	  f >> c;
	  std::cout << c;
	  file_123(); // file now contains "123"
	  f >> c;
	  std::cout << c;
	  f >> c;
	  std::cout << c << '\n';
	  f.close();

	  file_abc(); // file now contains "abc"
	  f.open("test.txt");
	  std::cout << "Reading from the file, with sync()\n";
	  f >> c;
	  std::cout << c;
	  file_123(); // file now contains "123"
	  f.sync();
	  f >> c;
	  std::cout << c;
	  f >> c;
	  std::cout << c << '\n';
      }

Possible output:
      Reading from the file
      abc
      Reading from the file, with sync()
      a23

	Defect reports

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

	  DR	Applied to		Behavior as published		    Cor-
     rect behavior
	LWG 62 C++98	  sync() returned  traits::eof()  if		     re-
     turns -1 in this
			  rdbuf()->pubsync() returns -1 		  case

See also
	sync	   synchronizes  the  buffers  with the associated character se-
     quence
	[virtual]  (virtual  protected	member	function  of  std::basic_stream-
     buf<CharT,Traits>)

	flush	  synchronizes with the underlying storage device
		  (public member function of std::basic_ostream<CharT,Traits>)

http://cppreference.com 	   2024.06.10	     std::basic_istream::sync(3)

home | help