std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs
void init_buf_ptrs(); | (только для экспозиции*) |
Инициализирует входную и выходную последовательности из buf в соответствии с mode. buf и mode являются членами данных, существующими только для экспозиции *this.
Сразу после возврата этой функции:
- Если в
modeустановленstd::ios_base::out,pbase()указывает наbuf.front(), аepptr() >= pbase() + buf.size()равенtrue;- кроме того, если в
modeустановленstd::ios_base::ate,pptr() == pbase() + buf.size()равенtrue, - иначе
pptr() == pbase()равенtrue.
- кроме того, если в
- Если в
modeустановленstd::ios_base::in,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/cpp/io/basic_stringbuf/init_buf_ptrs