视觉C++ Getline 问题(没有重载函数"getline"实例

visual C++ Getline issues (No instance of overloaded function "getline"

本文关键字:函数 重载 getline 实例 C++ Getline 问题 视觉      更新时间:2023-10-16

我知道我知道这个问题以前也有人问过,但我看了所有的答案,似乎没有一个能解决我的问题。当我使用getline函数来获取文件中一行的内容时,它不起作用。

getline(file, line);

'File'在这里声明:

ifstream File;
File.open("fruit.txt");

和'line'在这里声明:

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();

第一行应该是一个数字,我需要它

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;      

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

我认为你想达到的目标是:

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

我遇到了同样的错误。将此添加到代码中以解决

问题
    添加string
include <string>
  • 添加以下函数调用,其中string_variable应该是string类型。
  • std::getline(cin, sting_variable)