std::basic_stringbuf<CharT,Traits,Allocator>::pbackfail
来自 cppreference.cn
< cpp | io | basic stringbuf
protected: virtual int_type pbackfail( int_type c = Traits::eof() ) |
||
此受保护的虚函数由公共函数 basic_streambuf::sungetc 和 basic_streambuf::sputbackc 调用(这些函数又由 basic_istream::unget 和 basic_istream::putback 调用)。
1) 调用者请求将读取区域后退一个字符 (
pbackfail()
在没有参数或使用 Traits::eof() 作为参数的情况下被调用)a) 首先,检查是否存在回退位置,如果确实不存在,则失败。(stringbuf 没有外部字符源可重新读取)
2) 调用者尝试回退一个与之前检索到的字符不同的字符 (
pbackfail()
使用需要回退的字符调用),在这种情况下a) 首先,检查是否存在回退位置,如果不存在,则失败。
b) 然后检查回退位置中的字符。 如果那里的字符已经等于
c
,由 Traits::eq(to_char_type(c), gptr()[-1]) 确定,则只需递减 basic_streambuf::gptr()。c) 否则,如果缓冲区仅打开用于读取,则失败。
d) 否则,如果缓冲区打开用于写入 (mode && std::ios_base::out 非零),则递减 basic_streambuf::gptr() 并将
c
写入调整后 gptr() 指向的位置。目录 |
[编辑] 参数
c | - | 要放回的字符,或 Traits::eof() 以指示请求后退读取区域 |
[编辑] 返回值
c 成功时,除非 c
是 Traits::eof(),在这种情况下返回 Traits::not_eof(c)。
Traits::eof() 失败时。
[编辑] 示例
本节尚不完整 原因:没有示例 |
[编辑] 参见
[虚函数] |
将字符放回输入序列,可能会修改输入序列 ( std::basic_streambuf<CharT,Traits> 的虚保护成员函数) |
将输入序列中的下一个指针向后移动一位 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
将一个字符放回输入序列中 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
取消提取一个字符 ( std::basic_istream<CharT,Traits> 的公共成员函数) | |
将字符放入输入流 ( std::basic_istream<CharT,Traits> 的公共成员函数) |