什么是STL" rdbuf"方法名称代表什么?

时间:2015-09-24 20:32:40

标签: c++ stl

要求接受以下问题的用户"读取缓冲区"相当快: What does rd stand for in rdstate and rdbuf?

我仍然想知道"读取缓冲区"意味着在" std :: ostream" (COUT)。我没有找到任何STL文档描述这个函数做任何"阅读"。这只是一个错误的功能吗? (......显然,但也许我错过了一些东西)

2 个答案:

答案 0 :(得分:10)

  

我仍然想知道“读取缓冲区”在“std :: ostream”(cout)的上下文中意味着什么。

它是“读取”,如“读取值”或“获取值”未读取为“从流中读取”。

它似乎是旧Cfront代码中的常见约定,例如请参阅Cfront 2.0 documentation中描述的任务库,其中包含多个名称相同的函数,例如第2-5页:

int    rdcount();
int    rdmode();
int    rdmax();
void   setmode(int);
void   setmax(int);

所以“rd”和“set”似乎分别用于getter和setter的名字。

这意味着替换streambuf的rdbuf(basic_streambuf<C,T>*)的重载名称错误,它应该是setbuf,但是该名称已被streambuf本身使用,具有不同的含义。之后添加了rdbuf“setter”重载,原始设计只有“getter”,如上面链接的PDF末尾的STRSTREAM(3C ++)手册页所示:

class strstream : public strstreambase,  public iostream {
public:
                                 strstream();
                                 strstream(char*, int, int mode);
                 strstreambuf*   rdbuf() ;
                 char*           str();
};

答案 1 :(得分:0)

原始设备/数据缓冲区(rdbuf)<----我更喜欢@Daniel Jour的评论。

input_stream与通常由string_buffer或file_buffer实例化的stream_buffer相关。

喜欢:    显式basic_istream(std :: basic_streambuf * sb); 参考:

https://en.cppreference.com/w/cpp/io/basic_istream/basic_istream

class basic_streambuf是Raw Device的抽象。这意味着它可以套接字,文件,命名管道,邮筒,内存,graphycard-mem。 因此,从高层次上,如何命名不同的设备?

我认为RD(原始设备)和原始数据都可以,但是原始设备更准确,甚至指向内存的99.999%。