C++ 如何将cin或ifstream对象作为参数函数传递
我认为这是可行的,因为C++ 如何将cin或ifstream对象作为参数函数传递,c++,C++,我认为这是可行的,因为ifstream继承自istream string getFileContents(istream& file_contents) { string result; string line; while (getline(file_contents, line)) result += line + "\n"; return result; } 然后我想这样调用这个函数: ifstream file_input;
ifstream
继承自istream
string getFileContents(istream& file_contents)
{
string result;
string line;
while (getline(file_contents, line))
result += line + "\n";
return result;
}
然后我想这样调用这个函数:
ifstream file_input;
getFileContents(file_input);
...
getFileContents(cin);
但我在visual studio中遇到了以下错误:
“getFileContents”:无法将参数1从
std::istream
转换为std::ifstream&
它应该可以工作;你确定你没有在一个错误的原型周围留下一个错误的原型,它有C++的一个参数,而不是<代码> iStRAM&?< P> >拉多克:这是一个经典错误,我看到它很多次了,现在我发现它“在飞”<代码> >代码> BTW,如果我的答案解决了你的问题,你可以把它标记为“接受”(谢谢:)。为什么要这样做如果对象类型是ifstream,为什么要传递它,因为ifstream派生自istream。