我知道我知道。 以前有人问过这个问题,但我查看了所有答案,似乎没有一个能解决我的问题。当我使用 getline 函数获取文件中一行的内容时,它不起作用。
getline(file, line);
‘文件’在这里声明:
ifstream File;
File.open("fruit.txt");
并且在这里声明了“行”:
int line = 0;
Getline 以红色下划线显示此消息:
getline
no instance of overloaded function "getline" matches the argument list
argument types are :(std::ifstream, int)
这意味着 getline 的任何实例都没有文件流的参数列表和一个整数。
这是没有意义的,因为有关此问题的所有其他问题都明确指出,参数 是 文件流和整数。
我究竟做错了什么?
编辑:
这是完整的代码:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
int C_FRUIT = getline(fruitFile, line);
fruitFile.close();
第一行应该是一个数字,我需要它。
原文由 owenbradstreet 发布,翻译遵循 CC BY-SA 4.0 许可协议
getline()
将读取一行文本。它不能直接读取 int。这就是您收到错误消息的原因。您必须知道有两个
getline()
。有一个是istream::getline()
和std::getline()
。两者都有不同的签名。第一个是流的成员函数,定义在流头中;后者在<string>
标头中定义。但要注意:
std::getline()
的返回值不是int
!这是一个流引用。这就是为什么您会收到第二个编译器错误。最后,如果您想读取整数 x,使用提取器会更容易:
或者,如果您真的想在整行中读取 int: