Spec-Zone.ru › C++

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API