gpt4 book ai didi

c++ - 找出此文件读取代码中的错误 (C++)

转载 作者:太空狗 更新时间:2023-10-29 23:21:04 34 4
gpt4 key购买 nike

谁能告诉我为什么这个方法不能编译?

void Statistics::readFromFile(string filename)
{
string line;
ifstream myfile (filename);
if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}

else cout << "Unable to open file";

}

应该可以,对吧?然而,我总是收到以下错误消息:

Line Location Statistics.cpp:15: error:
no matching function for call to
'std::basic_ifstream<char, std::char_traits<char> >::
basic_ifstream(std::string*)'

如有任何帮助,我们将不胜感激。

最佳答案

ifstream myfile (filename);

应该是:

ifstream myfile (filename.c_str() );

此外,您的读取循环逻辑是错误的。应该是:

while ( getline( myfile,line ) ){
cout << line << endl;
}

您正在使用的 eof() 函数只有在您尝试阅读某些内容之后才有意义。

要了解为什么这会有所不同,请考虑简单的代码:

int main() {
string s;
while( ! cin.eof() ) {
getline( cin, s );
cout << "line is "<< s << endl;
}
}

如果您运行它并键入 ctrl-Z 或 ctrl-D 以指示 EOF 立即,即使实际上没有输入任何行(因为 EOF),也会执行 cout。通常,eof() 函数不是很有用,您应该测试 getline() 或流提取运算符等函数的返回值。

关于c++ - 找出此文件读取代码中的错误 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721129/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com