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

Mae*_*tro 5 c++ stl

询问以下问题的用户非常快地接受了"读取缓冲区": rdstate和rdbuf中的rd代表什么?

我仍然想知道"读取缓冲区"在"std :: ostream"(cout)的上下文中意味着什么.我没有找到任何描述此功能的STL文档作为任何"阅读".这只是一个错误的功能吗?(......显然,但也许我错过了什么)

Jon*_*ely 10

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

它是"读取",如"读取值"或"获取值"未读取为"从流中读取".

它似乎是旧Cfront代码中的常见约定,例如,请参阅Cfront 2.0文档中描述的任务库,该文档具有几个类似的函数,例如第2-5页:

int    rdcount();
int    rdmode();
int    rdmax();
void   setmode(int);
void   setmax(int);
Run Code Online (Sandbox Code Playgroud)

所以"rd"和"set"似乎分别用于getter和setter的名字.

这意味着rdbuf(basic_streambuf<C,T>*)替换streambuf 的重载被错误命名,它应该是setbuf,但是这个名称已经被streambuf本身使用,具有不同的含义.这rdbuf以后加入的"setter"过载,原设计只有"吸气剂",如图中STRSTREAM(3C++)在链接到上面的PDF的端手册页:

class strstream : public strstreambase,  public iostream {
public:
                                 strstream();
                                 strstream(char*, int, int mode);
                 strstreambuf*   rdbuf() ;
                 char*           str();
};
Run Code Online (Sandbox Code Playgroud)


小智 6

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

input_stream 与stream_buffer 关联,stream_buffer 通常由string_buffer 或file_buffer 实例化。

例如:显式 basic_istream( std::basic_streambuf* sb); 参考:

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

basic_streambuf 类是原始设备的抽象。这意味着它可以是套接字、文件、命名管道、邮槽、内存、graphiccard-mem。那么从高层来看,如何命名不同的设备呢?

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