首页 理论教育 《C++STL:大道至简精解,streambuf类》

《C++STL:大道至简精解,streambuf类》

时间:2023-10-25 理论教育 版权反馈
【摘要】:类模板basic_stringbuf的定义形式为:其中包含5个公用类型定义、两个构造函数、一个get()函数和一个set()函数,并重载了6个虚函数。两个构造函数的主要功能是构造基类basic_streambuf的对象,并初始化基类,使用参数which初始化模式。2)如果traits::eq_int_type返回false,并且假设输入序列的当前位置有效、模式为输出时,指定字符c给,函数返回traits::not_eof。

《C++STL:大道至简精解,streambuf类》

类模板basic_stringbuf的定义形式为:

其中包含5个公用类型定义、两个构造函数、一个get()函数和一个set()函数,并重载了6个虚函数。

两个构造函数:

get()函数和set()函数的形式为:

6个虚函数的形式:

下面对其各成员函数和构造函数进行详细说明。

两个构造函数的主要功能是构造基类basic_streambuf的对象,并初始化基类,使用参数which初始化模式。

成员函数str()的功能是获取字符串缓冲区中的内容或初始化输入输出序列。

虚underflow()函数将参数指定的字符放入输入缓冲区,如果可能,需要3种方法:(www.xing528.com)

1)如果输入序列的当前位置有效,并且traits::eq_int_type(c,traits::eof())返回false、traits::eq(to_char_type(c),gptr()[-1])返回true以及assignsgptr()-1togptr(),上述条件均满足时,函数返回字符c。

2)如果traits::eq_int_type(c,traits::eof())返回false,并且假设输入序列的当前位置有效、模式为输出(ios::out)时,指定字符c给∗(--gp()),函数返回traits::not_eof(c)。

说明:traits::eof()函数表明函数调用失败。

成员函数overflow()的功能是将参数指定的字符c送入输出缓冲区,如果可能,有两种可能的办法:

1)当traits::eq_int_type(c,traits::eof())返回false,并输出缓冲区当前位置有效时,函数会调用sputc(c)函数,如果调用成功,函数返回字符c。

2)如果traits::eq_int_type(c,traits::eof())返回true,将没有字符被添加(ap-pend)。函数调用成功时,返回一个数值;调用失败时,返回traits::eof()。

成员函数seekoff()的功能是在一个可控序列中改变流的位置。seekpos()函数的功能和seekoff()函数近似。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈