命名空间
变体
操作

std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs

来自 cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
void init_buf_ptrs();
(仅供说明*)

根据 modebuf 初始化输入和输出序列。 bufmode*this仅供说明的数据成员

此函数返回后立即

  • 如果 std::ios_base::outmode 中设置,pbase() 指向 buf.front()epptr() >= pbase() + buf.size()true
    • 此外,如果 std::ios_base::atemode 中设置,pptr() == pbase() + buf.size()true
    • 否则 pptr() == pbase()true
  • 如果 std::ios_base::inmode 中设置,eback() 指向 buf.front(),且 gptr() == eback() && egptr() == eback() + buf.size()true

[编辑] 注释

出于效率原因,流缓冲区操作可能会违反 buf 的不变量,而它在 std::basic_stringbuf 中封装,例如,通过写入范围 [buf.data() + buf.size()buf.data() + buf.capacity()) 中的字符。

所有从 buf 中检索 std::basic_string 的操作都确保在返回的值上保留了 std::basic_string 不变量。

[编辑] 缺陷报告

以下行为更改缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布的行为 正确的行为
LWG 1448 C++98 调用 init_buf_ptrs() 使
pptr() == pbase() + buf.data()
对于既是输入流又是输出流的流
使
pptr() == pbase() + buf.size()
对于追加流