std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs
From cppreference.com
< cpp | io | basic stringbuf
C++
Input/output library
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| 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_stringbuf
| Public member functions | ||||
(C++11) | ||||
(C++11) | ||||
(C++20) | ||||
| Protected member functions | ||||
| Non-member functions | ||||
(C++11) | ||||
| Exposition-only member functions | ||||
basic_stringbuf::init_buf_ptrs |
| void init_buf_ptrs(); |
(exposition only*) | |
Initializes the input and output sequences from buf according to mode. buf and mode are exposition-only data members of *this.
Immediately after this function returns:
- If std::ios_base::out is set in mode, pbase() points to buf.front() and epptr() >= pbase() + buf.size() is true;
- in addition, if std::ios_base::ate is set in mode, pptr() == pbase() + buf.size() is true,
- otherwise pptr() == pbase() is true.
- If std::ios_base::in is set in mode, eback() points to buf.front(), and gptr() == eback() && egptr() == eback() + buf.size() is true.
[edit] Notes
For efficiency reasons, stream buffer operations can violate invariants of buf while it is held encapsulated in the std::basic_stringbuf, e.g., by writing to characters in the range [buf.data() + buf.size(), buf.data() + buf.capacity()).
All operations retrieving a std::basic_string from buf ensure that the std::basic_string invariants hold on the returned value.
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 1448 | C++98 | calling init_buf_ptrs() madepptr() == pbase() + buf.data() for streams that are both input and output streams |
makes pptr() == pbase() + buf.size() for append streams |