C Getline 问题(没有重载函数“getline”的实例

新手上路,请多包涵

我知道我知道。 以前有人问过这个问题,但我查看了所有答案,似乎没有一个能解决我的问题。当我使用 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 许可协议

阅读 2.1k
2 个回答

getline() 将读取一行文本。它不能直接读取 int。这就是您收到错误消息的原因。

您必须知道有两个 getline() 。有一个是 istream::getline()std::getline() 。两者都有不同的签名。第一个是流的成员函数,定义在流头中;后者在 <string> 标头中定义。

但要注意: std::getline() 的返回值不是 int !这是一个流引用。这就是为什么您会收到第二个编译器错误。

最后,如果您想读取整数 x,使用提取器会更容易:

 int value;
fruitFile >> value;
fruitFile.ignore(SIZE_MAX, '\n');   // in case you'd need to go to next line

或者,如果您真的想在整行中读取 int:

 string line;
getline(fruitFile, line);
stringstream sst(line);     // creates a string stream: a stream that takes line as input
sst >> value;

原文由 Christophe 发布,翻译遵循 CC BY-SA 3.0 许可协议

getline 的第二个参数需要是一个字符串: http ://www.cplusplus.com/reference/string/string/getline/

我认为你试图实现的是:

 ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
fruitFile >> line
fruitFile.close();

原文由 e-dschungel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题