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

What does STL "rdbuf" method name stand for?

本文关键字:什么 rdbuf 方法 STL      更新时间:2023-10-16

提出以下问题的用户很快接受了"read buffer":rd在rdstate和rdbuf中代表什么?

我仍然想知道"读缓冲区"在"std::ostream"(cout)上下文中是什么意思。我没有找到任何STL文档描述这个函数做任何"读取"。这只是一个命名不当的函数吗?(…显然,但也许我错过了什么)

我仍然想知道"read buffer"在"std::ostream" (cout)上下文中是什么意思。

它是"read",如"read of的值"或"get the value of的值",如"read from the stream"。

这似乎是旧Cfront代码中的一个常见约定,例如,参见Cfront 2.0文档中描述的任务库,其中有几个类似的函数命名,例如在第2-5页:

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

因此,"rd"answers"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();
};

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

input_stream与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是原始设备的抽象。这意味着它可以是套接字、文件、命名管道、邮件槽、内存、显卡存储器。那么从高层次上讲,如何给不同的设备命名呢?

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