std::basic_streambuf
性病:基本[医]流光
Defined in header | | |
---|---|---|
template< class CharT, class Traits = std::char_traits<CharT> > class basic_streambuf; | | |
全班basic_streambuf
控制输入和输出到字符序列。它包括并提供访问。
1%29受控字符序列
,也称为缓冲器
,其中可能包含输入序列
%28也称为获取面积
%29用于缓冲输入操作和/或输出序列
%28也称为放置面积
%29用于缓冲输出操作。
2%29关联字符序列
,也称为来源
%28用于输入%29或沉槽
%28用于输出%29。这可能是通过OS API%28文件、TCP套接字、串口、其他字符设备%29访问的实体,也可能是对象%28 std::VISTIC、数组、字符串文本%29,可以解释为字符源或接收器。
I/O流对象std::basic_istream
和std::basic_ostream
,以及从它们派生的所有对象%28std::ofstream
,,,std::stringstream
,ETC%29,完全按照std::basic_streambuf
...
受控字符序列是CharT
它在任何时候都代表一个子序列,或者是一个进入相关字符序列的“窗口”。它的状态由三个指针描述:
1%29起始指针
,总是指向缓冲区的最低元素。
2%29下一个指针
,指向下一个阅读或写入候选元素。
3%29末端指针
,在缓冲区结束后指向一个。
阿basic_streambuf
对象可以支持输入%28,在这种情况下,将调用起始、下一个和结束指针所描述的缓冲区。获取面积
%29,产出%28放置面积
%29,或同时输入和输出。在后一种情况下,跟踪六个指针,这些指针都可能指向同一个字符数组或两个单独数组的元素。
如果下一个指针小于PUT区域中的结束指针,则写入位置
是可用的。下一个指针可以取消引用并分配给。
如果下一个指针小于GET区域中的结束指针,则读位
是可用的。下一个指针可以取消引用并从中读取。
如果下一个指针大于GET区域中的起始指针,则倒置位置
则下一个指针可能会减少、取消引用并分配给它,以便将一个字符放回GET区域。
受控序列中的字符表示和编码可能与关联序列中的字符表示不同,在这种情况下,std::codecvt
localefacet通常用于执行转换。常见的示例是utf-8%28或其他多字节%29的文件,这些文件是通过std::wfstream
对象:受控序列由wchar_t
字符,但关联序列由字节组成。
的典型实施std::basic_streambuf
基类只包含六个CharT*
指针和std::locale
作为数据成员。此外,实现可以保留locale方面的缓存副本,这些副本在任何时候都是无效的。imbue()
叫做。混凝土缓冲,如std::basic_filebuf
或std::basic_stringbuf
派生自std::basic_streambuf
...
标准库提供了两种方便的字体。
在标头中定义<streambuf>
*。
类型定义
流光基[医]流光<char>
wStrebuf Basic[医]Streambuf<wchar[医]T>
成员类型
Member type | Definition |
---|---|
char_type | CharT |
traits_type | Traits |
int_type | Traits::int_type |
pos_type | Traits::pos_type |
off_type | Traits::off_type |
成员函数
(destructor) virtual | destructs the basic_streambuf object (virtual public member function) |
---|
地区
调用imbue%28%29%28公共成员函数%29
getloc获得关联的locale%28公共成员函数%29的副本
定位
调用setbuf%28%29%28公共成员函数%29
公共服务调用查找函数%28%29%28公共成员函数%29
公共服务调用寻呼%28%29%28公共成员函数%29
公共同步调用同步%28%29%28公共成员函数%29
获取面积
在[医]获取GET区域%28公共成员函数%29中立即可用的字符数
snextc将推进输入序列,然后读取一个字符,而不会再次前进%28公共成员函数%29。
从输入序列中读取一个字符,并提升序列%28公共成员函数%29。
stossc%28不推荐使用%29%28,直到C++17%29将输入序列升级,就像调用sbunpc%28%29和丢弃结果%28公共成员函数%29一样。
sgetc从输入序列中读取一个字符,而不提升序列%28公共成员函数%29。
sgetn调用xsgetn%28%29%28公共成员函数%29
放置面积
溅射将一个字符写入PUT区域,并提升下一个指针%28公共成员函数%29。
调用xspain%28%29%28公共成员函数%29
倒置
sputbackc在输入序列%28公共成员函数%29中放回一个字符
sungetc将输入序列中的下一个指针移回1%28公共成员函数%29。
受保护成员函数
%28构造函数%29构造基本[医]流对象%28受保护成员函数%29
运算符=%28C++11%29替换基本[医]流对象%28受保护成员函数%29
交换%28C++11%29掉期[医]流对象%28受保护成员函数%29
地区
灌输虚拟更改关联区域设置%28虚拟受保护成员函数%29
定位
塞布夫虚拟使用用户定义的数组替换缓冲区,如果允许的话,使用%28虚拟受保护成员函数%29。
寻的虚拟使用相对寻址%28虚拟受保护成员函数%29将下一个指针重新定位在输入序列、输出序列或两者中
求购虚拟使用绝对寻址%28虚拟受保护成员函数%29在输入序列、输出序列或两者中重新定位下一个指针
同步虚拟将缓冲区与关联的字符序列%28虚拟受保护成员函数%29同步。
获取面积
演艺界c虚拟如果已知%28虚拟受保护成员函数%29,则获取关联输入序列中可用于输入的字符数。
底流虚拟将相关输入序列中的字符读取到GET区域%28虚拟受保护成员函数%29
流线虚拟将相关输入序列中的字符读取到GET区域,并将下一个指针%28虚拟受保护成员函数%29向前推进。
xsgetn虚拟从输入序列%28虚拟受保护成员函数%29读取多个字符
ebackgptregptr返回指向GET区域%28受保护成员函数%29的起始、当前字符和结束的指针。
在输入序列%28受保护的成员函数%29中的下一个指针
SETG重新定位输入序列%28受保护的成员函数%29的开始、下一步和结束指针。
放置面积
xspon虚拟将多个字符写入输出序列%28虚拟受保护成员函数%29
溢流虚拟将字符写入PUT区域%28虚拟受保护成员函数%29的关联输出序列
pbasepptrepptr返回指向PUT区域%28受保护成员函数%29的起始、当前字符和结束的指针。
pbp推进输出序列%28受保护的成员函数%29的下一个指针。
SETP重新定位输出序列%28受保护的成员函数%29的开始、下一步和结束指针。
倒置
背向失败虚拟将一个字符重新放入输入序列,可能会修改输入序列%28虚拟受保护的成员函数%29。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。