视觉C++ Getline 问题(没有重载函数"getline"实例
visual C++ Getline issues (No instance of overloaded function "getline"
我知道我知道这个问题以前也有人问过,但我看了所有的答案,似乎没有一个能解决我的问题。当我使用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)
相关文章:
- 为什么使用SFINAE而不是函数重载
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- c++:可变模板和函数重载
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 解决模板成员函数重载
- 为什么不允许成员函数和非成员函数之间的函数重载?
- 推断模板化函数中的函数重载
- C++复制函数重载导致"must be a nonstatic member function"错误
- 为什么 std::sort 找不到合适的(静态成员)函数重载?
- 可变参数泛型 lambda 和函数重载
- C++中的函数重载和继承
- 当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?
- C/C++ 可变参数宏函数重载
- 将基类的成员函数重载到其他派生类C++
- C++ 函数重载匹配
- C++函数重载,具体步骤是什么
- C++:使用 param pack 显式调用函数重载
- 隐式生成的函数重载用于右值参数?
- 使用函数重载输入运算符
- 运算符重载函数上的函数重载