传递对 std::ifstream 的引用作为参数

New*_*bie 3 c++ function ifstream

我正在尝试编写一个带ifstream&参数的函数。

void word_transform(ifstream & infile)
{
    infile("content.txt");
    //etc
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

类型“ifstream”(又名“basic_ifstream”)不提供调用运算符。

你能帮我看看有什么问题吗?

jpo*_*o38 6

调用运算符是一个函数,类似于operator()( params )允许使用语法myObject( params )

因此,当您编写 时infile(...),您是在尝试向我们呼叫接线员。

您要做的是打开一个文件,使用以下open方法:

void word_transform(ifstream & infile)
{
    infile.open("content.txt",std::ios_base::in);
    if ( infile.is_open() )
        infile << "hello";
    infile.close();
}
Run Code Online (Sandbox Code Playgroud)

但是,正如所评论的,将 infile 引用传递给这样的函数并没有真正意义。你可以考虑:

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;
}
Run Code Online (Sandbox Code Playgroud)

或者:

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;
}
Run Code Online (Sandbox Code Playgroud)