簡體   English   中英

STL“rdbuf”方法名稱代表什么?

[英]What does STL "rdbuf" method name stand for?

提出以下問題的用戶很快就接受了“讀取緩沖區”: rd 在 rdstate 和 rdbuf 中代表什么?

我仍然想知道“讀取緩沖區”在“std::ostream”(cout)的上下文中意味着什么。 我沒有發現任何 STL 文檔將這個函數描述為進行任何“閱讀”。 這只是一個錯誤命名的函數嗎? (......顯然,但也許我錯過了一些東西)

我仍然想知道“讀取緩沖區”在“std :: ostream”(cout)的上下文中意味着什么。

它是“讀取”,如“讀取值”或“獲取值”未讀取為“從流中讀取”。

它似乎是舊Cfront代碼中的常見約定,例如,請參閱Cfront 2.0文檔中描述的任務庫,該文檔中包含多個名稱相同的函數,例如第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();
};

原始設備/數據緩沖區 (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 是原始設備的抽象。 這意味着它可以是 socket、file、namedpipe、mailslot、memory、graphycard-mem。 那么從高層次來看,如何命名不同的設備?

我認為 RD(原始設備)和原始數據都可以,但原始設備更准確,甚至 99.999% 次都指向內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM