在线文档教程
C++
输入/输出 | Input/output

std::basic_streambuf::sungetc

性病:基本[医]Streambuf::sungetc

int_type sungetc(

如果在GET区域%28中有一个备用位置gptr() > eback()%29,然后减少下一个指针%28gptr()%29并返回它现在指向的字符。

如果没有备用位置,则调用pbackfail()如果可能的话,可以备份输入序列。

I/O流函数basic_istream::unget是根据此功能实现的。

参数

%280%29

返回值

如果返回位置可用,则返回下一个指针指向的字符,转换为int_type带着Traits::to_int_type(*gptr())下一个单字符输入将返回这个字符。

如果没有备用位置,则返回pbackfail()返回,即Traits::eof()在失败的时候。

二次

#include <iostream> #include <sstream> int main() { std::stringstream s("abcdef" // gptr() poitns to 'a' char c1 = s.get( // c = 'a', gptr() now points to 'b' char c2 = s.rdbuf()->sungetc( // same as s.unget(): gptr() points to 'a' again char c3 = s.get( // c3 = 'a', gptr() now points to 'b' char c4 = s.get( // c4 = 'b', gptr() now points to 'c' std::cout << c1 << c2 << c3 << c4 << '\n'; s.rdbuf()->sungetc( // back to 'b' s.rdbuf()->sungetc( // back to 'a' int eof = s.rdbuf()->sungetc( // nothing to unget: pbackfail() fails if (eof == EOF) std::cout << "Nothing to unget after 'a'\n"; }

二次

产出:

二次

aaab Nothing to unget after 'a'

二次

另见

sputbackcputs one character back in the input sequence (public member function)
ungetunextracts a character (public member function of std::basic_istream)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/io/basic[医]Streambuf/sungetc