Я хочу написать простой объект istream, который просто преобразует другой istream.
Я хочу только реализовать readline (который будет читать строку из исходного потока, обрабатывать его и возвращать обработанную строку), и иметь некоторый общий код, который на read будет использовать мою строку чтения, кеш он и предоставить требуемое количество байтов в качестве вывода.
Есть ли класс, который позволил бы мне это сделать?
Например
struct mystream : istreamByReadLine {
  istream& s;
  mystream(istream& _s):s(_s){}
  virtual string getline() {
    string line;
    getline(s,line);
    f(line);
    return line;
  }
}
class istreamByReadLine : istream {
  ... // implementing everything needed to be istream compatible, using my
  ... // getline() virtual method
}
