错误:没有匹配函数调用‘std::vector<std:

Posted

技术标签:

【中文标题】错误:没有匹配函数调用‘std::vector<std:【英文标题】:error: no matching function for call to ‘std::vector<std: 【发布时间】:2021-08-31 14:17:53 【问题描述】:

我编写 func 将字符串从文件写入向量,但出现错误

error : error: no matching function for call to ‘std::vector<std::__cxx11::basic_string<char> >::push_back(std::ifstream&)

代码:

//parse file file

#include <fstream>
#include <vector>

const unsigned short numOfStrings=5;

void ReadFromFile (std::ifstream& thisin, std::vector<std::string>& thisData)

    thisData.push_back(thisin);


int main ()


【问题讨论】:

是的,您不能将 ifstream 推送到字符串向量中。 您忘记在函数中添加一个 while 循环,该循环从 thisin 读取字符串,然后您可以将这些字符串添加到向量中。 请参阅此答案的第 2 部分:https://***.com/a/7868998/487892,了解如何逐行读取文件。您不需要内部 std::istringstream iss(line); ... 部分将其替换为 thisData.push_back(line); numOfStrings 是否参与了这个问题? 没有,忘记删除 【参考方案1】:

您正试图将ifstream 推入向量,而不是从中读取。

要从 ifstream 中读取,您可以执行以下操作。

void ReadFromFile (std::ifstream& thisin, std::vector<std::string>& thisData)

    std::string word;
    while(thisin >> word)
    
        thisData.push_back(word);
     

【讨论】:

以上是关于错误:没有匹配函数调用‘std::vector<std:的主要内容,如果未能解决你的问题,请参考以下文章

错误:没有匹配函数调用‘std::vector<std::__cxx11::basic_string<char> >::push_back(int&)’

错误:没有用于调用'variable'的匹配函数

创建函数变体向量时出现“调用没有匹配函数”错误

没有匹配函数调用‘std::vector::push_back(std::string&)’

当我尝试从 main 调用我的类模板函数时出现错误

没有匹配的函数调用奇怪的错误