我知道我知道。我以前问过这个问题,但是我看过所有的答案,似乎没有一个能解决我的问题。当我使用getline函数获取文件中一行的内容时,它不起作用。
getline(file, line);“‘File”在这里声明:
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();第一行应该是数字,我需要它。
发布于 2016-10-24 22:25:17
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; 发布于 2016-10-24 21:55:56
getline的第二个参数需要是一个字符串:http://www.cplusplus.com/reference/string/string/getline/
我认为你想要达到的目标是:
ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
fruitFile >> line
fruitFile.close();发布于 2022-07-06 13:54:40
我也面临同样的错误。将其添加到代码中以解决问题
string库include <string>string_variable应该是string类型。std::getline(cin, sting_variable)https://stackoverflow.com/questions/40228108
复制相似问题