std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs
void init_buf_ptrs(); | (только для примера*) |
Инициализирует входные и выходные последовательности из buf в соответствии с mode. buf и mode являются данными членами только для примера *this.
Сразу после возврата этой функции:
- Если
std::ios_base::outустановлено вmode,pbase()указывает наbuf.front()иepptr() >= pbase() + buf.size()равноtrue;- дополнительно, если
std::ios_base::ateустановлено вmode,pptr() == pbase() + buf.size()равноtrue, - в противном случае
pptr() == pbase()равноtrue.
- дополнительно, если
- Если
std::ios_base::inустановлено вmode,eback()указывает наbuf.front(), иgptr() == eback() && egptr() == eback() + buf.size()равноtrue.
Примечания
По соображениям эффективности операции с буферами потоков могут нарушать инварианты buf в то время, когда он заключен в std::basic_stringbuf, например, при записи в диапазон [buf.data() + buf.size(), buf.data() + buf.capacity()).
Все операции, возвращающие std::basic_string из buf, гарантируют, что инварианты std::basic_string сохраняются для возвращаемого значения.
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 1448 | C++98 | вызов init_buf_ptrs() производилpptr() == pbase() + buf.data()для потоков, которые являются одновременно потоками ввода и вывода | производитpptr() == pbase() + buf.size()для потоков добавления |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_stringbuf/init_buf_ptrs