Что означает имя метода STL "rdbuf"?

Пользователь, который задал следующий вопрос, принял "буфер чтения" довольно быстро: Что означает rdstate и rdbuf?

Я все еще задаюсь вопросом, что означает "буфер чтения" в контексте "std:: ostream" (cout). Я не нашел ЛЮБОЙ документации STL, описывающей эту функцию, как "любое чтение". Это просто неназванная функция? (... видимо, но, может быть, я чего-то не хватает)

1 ответ

Я все еще задаюсь вопросом, что означает "буфер чтения" в контексте "std:: ostream" (cout).

Он "читается", как в "читать значение" или "получать значение", не считанное как "читать из потока".

Кажется, это обычное соглашение в старом коде Cfront, например. см. в библиотеке задач, описанной в документации Cfront 2.0, которая имеет несколько функций, названных так, например. на стр. 2-5:

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

Итак, "rd" и "set", по-видимому, используются для имен геттеров и сеттеров соответственно.

Это означает, что перегрузка rdbuf(basic_streambuf<c,t>*)</c,t>, заменяющая streambuf, неверно, она должна быть setbuf, но это имя уже используется самим streambuf с другим значением. Эта перегрузка rdbuf "setter" была добавлена ​​позже, исходный дизайн имел только "getter", как показано на странице руководства STRSTREAM (3С++) в конце PDF-документа, связанного выше:

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

licensed under cc by-sa 3.0 with attribution.