C++ Getline 问题(没有重载函数的实例 "getline"
C++ Getline issues (No instance of overloaded function "getline"
我知道我知道。
以前有人问过这个问题,但我查看了所有答案,none 似乎解决了我的问题。当我使用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的第二个参数需要是一个字符串:http://www.cplusplus.com/reference/string/string/getline/
我认为您要达到的目标是:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
fruitFile >> line
fruitFile.close();
getline()
将阅读一行文本。它不能直接读取一个int。这就是您收到错误消息的原因。
你要知道有两个getline()
。有一个是 istream::getline()
和 std::getline()
。两者都有不同的签名。第一个是流的成员函数,定义在流中header;后者在 <string>
header 中定义。
但请注意:std::getline()
的 return 值不是 int
!这是一个流参考。这就是为什么您会收到第二个编译器错误的原因。
最后,如果你想读取整数 x,使用提取器更容易:
int value;
fruitFile >> value;
fruitFile.ignore(SIZE_MAX, '\n'); // in case you'd need to go to next line
或者如果你真的想在整行中读取一个整数:
string line;
getline(fruitFile, line);
stringstream sst(line); // creates a string stream: a stream that takes line as input
sst >> value;
我知道我知道。 以前有人问过这个问题,但我查看了所有答案,none 似乎解决了我的问题。当我使用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的第二个参数需要是一个字符串:http://www.cplusplus.com/reference/string/string/getline/
我认为您要达到的目标是:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
fruitFile >> line
fruitFile.close();
getline()
将阅读一行文本。它不能直接读取一个int。这就是您收到错误消息的原因。
你要知道有两个getline()
。有一个是 istream::getline()
和 std::getline()
。两者都有不同的签名。第一个是流的成员函数,定义在流中header;后者在 <string>
header 中定义。
但请注意:std::getline()
的 return 值不是 int
!这是一个流参考。这就是为什么您会收到第二个编译器错误的原因。
最后,如果你想读取整数 x,使用提取器更容易:
int value;
fruitFile >> value;
fruitFile.ignore(SIZE_MAX, '\n'); // in case you'd need to go to next line
或者如果你真的想在整行中读取一个整数:
string line;
getline(fruitFile, line);
stringstream sst(line); // creates a string stream: a stream that takes line as input
sst >> value;