C++ rdbuf()->;in_avail()在将多个字符放入stringstream后始终返回1

C++ rdbuf()->;in_avail()在将多个字符放入stringstream后始终返回1,c++,std,C++,Std,我认为:在将某些内容放入缓冲区后,可用于读取的字符数应该大于1。但事实并非如此。为什么? #包括 #包括 int main(){ std::stringstreambuf; 对于(int i=0;i

我认为:在将某些内容放入缓冲区后,可用于读取的字符数应该大于1。但事实并非如此。为什么?

#包括
#包括
int main(){
std::stringstreambuf;
对于(int i=0;i<3;++i){

buf Sooo在get区域有1个可用字符,不能保证您放置的所有内容都在那里。这是您可以提取的字符数,而无需调用underflow()。
buf: 0
buf.rdbuf()->in_avil(): 1
buf: 01
buf.rdbuf()->in_avil(): 2
buf: 012
buf.rdbuf()->in_avil(): 3
buf: 0
buf.rdbuf()->in_avil(): 1
buf: 01
buf.rdbuf()->in_avil(): 1
buf: 012
buf.rdbuf()->in_avil(): 1