我正在尝试编写一个带有 ifstream&
参数的函数。
void word_transform(ifstream & infile)
{
infile("content.txt");
//etc
}
这给了我一个错误:
Type 'ifstream' (aka 'basic_ifstream ') does not provide a call operator.
请问有什么问题吗?
最佳答案
调用运算符 是一个类似于 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();
}
但是,正如所评论的那样,将文件引用传递给这样的函数实际上没有任何意义。您可以考虑:
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;
}
或者:
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;
}
关于c++ - 传递对 std::ifstream 的引用作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501160/