Can I inherit from ifstream and read the file from my derived class like this:
#include <iostream>
using namespace std;
const string usage_str = "Usage: extract <file>";
class File: public ifstream
{
public:
    explicit File(const char *fname, openmode mode = in);
    void extract(ostream& o);
};
File::File(const char *fname, openmode mode)
{
    ifstream(fname, mode);
}
void File::extract(ostream& o)
{
    char ch;
    char buf[512];
    int i = 0;
    while (good()) {
        getline(buf, sizeof(buf));
        o<<buf;
        i++;
    }   
    cout<<"Done "<<i<<" times"<<endl;
}
void msg_exit(ostream& o, const string& msg, int exit_code)
{
    o<<msg<<endl;
    exit(exit_code);
}
int do_extract(int argc, char *argv[])
{
    cout<<"Opening "<<argv[1]<<endl;
    File f(argv[1]);
    if (! f)
        msg_exit(cerr, usage_str, 1);
    f.extract(cout);
    return 0;
}
int main(int argc, char *argv[])
{
    if (argc < 2)
        msg_exit(cout, usage_str, 0);
    do_extract(argc, argv);
    return 0;
}
I expect it to read the whole file, but it reads just one symbol (which is not the first symbol of the given file)...
 
     
     
    