std::basic_filebuf<CharT,Traits>::overflow
From cppreference.com
 
 
 < cpp | io | basic filebuf 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Input/output library 
 
 
 
 
 
 
 
 
 
 
 
 
 Print functions (C++23)
 Buffers
(C++23)
(C++98/26*)
(C++20)
 Streams
 Abstractions
 File I/O
 String I/O
 Array I/O
(C++23)
(C++23)
(C++23)
(C++98/26*)
(C++98/26*)
(C++98/26*)
 Synchronized Output
(C++20)
 Types
 Error category interface
(C++11)
(C++11)
std::basic_filebuf 
 
 
 
 
 
 Public member functions
(C++11)
(C++11)
(C++26)
 Protected member functions
basic_filebuf::overflow
 Non-member functions
(C++11)
protected:
virtual int_type overflow( int_type ch = Traits::eof() );
 
 
virtual int_type overflow( int_type ch = Traits::eof() );
Writes some data from the put area to the associated character sequence (to the file).
Behaves like the base class version std::basic_streambuf::overflow() , except that the behavior of "consuming characters" is defined as follows:
1) First, uses std::codecvt::out  of the imbued locale to convert the characters into external (possibly multibyte) representation, stored in a temporary buffer, as follows: (XSIZE is some unspecified buffer size)
const std::codecvt <CharT, char, typename Traits::state_type>& a_codecvt = std::use_facet <std::codecvt <CharT, char, typename Traits::state_type>>(getloc()); typename Traits::state_type state; CharT* end; char xbuf[XSIZE]; char* xbuf_end; std::codecvt_base::result r = a_codecvt.out(state, pbase(), pptr(), end, xbuf, xbuf + XSIZE, xbuf_end);
2) Then writes all fully-converted characters from the buffer into the file. Formally, performs the following steps based on the value of r:
| r | Operation | 
|---|---|
| std::codecvt_base::ok | Output characters in [xbuf, xbuf_end)to the file, and fail if output fails. At this point if pbase() != pptr() and pbase() == end are both true (which means xbuf is not large enough for even one external character), then increase XSIZE and repeat from the beginning. | 
| std::codecvt_base::partial | Output the converted external characters in [xbuf, xbuf_end)to the file, and repeat using the remaining unconverted internal characters in[end, pptr()). If output fails, fail (without repeating). | 
| std::codecvt_base::noconv | Output characters in [pbase(), pptr())to the file. | 
| std::codecvt_base::error | Fail. | 
 If the associated file is not open (is_open()  returns false), output will always fail.
3) Establishes an observable checkpoint.
 (since C++26)Contents
[edit] Parameters
 ch
 -
 the character to store in the put area
[edit] Return value
Traits::not_eof(ch) to indicate success or Traits::eof() to indicate failure.
[edit] Notes
If a_codecvt.always_noconv() returns true, the call to a_codecvt.out() may be skipped.
[edit] Example
 This section is incomplete
Reason: no example
Reason: no example
[edit] See also
[virtual]
(virtual protected member function of
std::basic_streambuf<CharT,Traits>) [edit]