I'm trying to write a function with an ifstream& argument.
void word_transform(ifstream & infile)
{
    infile("content.txt");
    //etc
}
which gave me an error:
Type 'ifstream' (aka 'basic_ifstream ') does not provide a call operator.
Can you please me what's wrong?
call operator is a function like operator()( params ) allowing to use the syntax myObject( params ).
So, when you write infile(...), you are trying to us a call operator.
What you are trying to do is to open a file, use the open method:
void word_transform(ifstream & infile)
{
    infile.open("content.txt",std::ios_base::in);
    if ( infile.is_open() )
        infile << "hello";
    infile.close();
}
But, as commented, it does not really make sense to pass infile reference to such a function. You may consider:
void word_transform(istream& infile)
{
    infile << "hello";
}
int main()
{
    ifstream infile;
    infile.open("content.txt",std::ios_base::in);
    if ( infile.is_open() )
        word_transform( infile );
    infile.close();
    return 0;
}
Or:
void word_transform()
{
    ifstream infile;
    infile.open("content.txt",std::ios_base::in);
    if ( infile.is_open() )
        infile << "hello";
    infile.close();
}
int main()
{
    word_transform();
    return 0;
}
                        You attempt to call operator() on your parameter. That will not work. Are you trying to open a file? If you get an ifstream as parameter, it should be open from the start because you opened it outside your function. Passing a stream and then opening it inside your function does not make sense.
void word_transform(std::ifstream& infile)
{
    // read something from infile
}
int main()
{
   std::ifstream file("content.txt");
   // error checks
   word_transform(file);
   return 0;
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With