gpt4 book ai didi

C++错误: no matching function for call to 'getline' from within function,但在main中有效

转载 作者:行者123 更新时间:2023-11-30 01:39:59 28 4
gpt4 key购买 nike

更新:感谢您的建议!从我的函数参数中删除 const 并将 #include 替换为 #include ,成功了!


我是 C++ 的新手,我查阅了几篇文章,但似乎无法弄清楚为什么我在用户定义的函数中收到“错误:没有匹配的函数来调用‘getline’” ,当它从主要功能正常工作时。

我也不明白为什么在我看到的在线 getline 的一些示例中需要 2 个参数(std::istream&、std::string&),而在其他示例中它需要 3 个参数(std::istream&、std::字符串&, 字符)

一直在绞尽脑汁寻找解决方案,如果有人能指出我遗漏的地方,我将不胜感激。对不起,如果这是一个天真的问题!

压缩代码:

 #include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

char *myfunction (std::ifstream& infile, const std::string& strBuf){

//compile error "no matching function for call to 'getline'"
getline(infile, strBuf);

char *ptr= NULL;
return ptr;
}



int main() {
ifstream infile;
infile.open("myfile");
std::string strBuf;

getline(infile, strBuf);
// prints the first line of the file as expected
cout << strBuf << endl;

}

最佳答案

您不能读取到 const 对象。

将参数类型从 const std::string& 更改为 std::string&

char *myfunction (std::ifstream& infile, std::string& strBuf)
// ^^ No const
{
getline(infile, strBuf);
...
}

此外,如评论中所述,不要忘记添加

#include <string>

关于C++错误: no matching function for call to 'getline' from within function,但在main中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com