微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有“getline”实例与参数列表匹配

如何解决没有“getline”实例与参数列表匹配

我正在使用 GeeksForGeeks ReadCSV 函数来读取 CSV 文件,我完全按原样复制了代码,但出现此错误:“没有“getline”实例与参数匹配list”谁能告诉我为什么会这样?

完整代码如下:

void ReadCSV(std::string filename,std::vector<RowVector*>& data)
{
    data.clear();
    std::ifstream file(filename);
    std::string line,word;
    // determine number of columns in file
    getline(file,line,'\n');
    std::stringstream ss(line);
    std::vector<Scalar> parsed_vec;
    while (getline(ss,word,',')) {
        parsed_vec.push_back(Scalar(std::stof(&word[0])));
    }
    uint cols = parsed_vec.size();
    data.push_back(new RowVector(cols));
    for (uint i = 0; i < cols; i++) {
        data.back()->coeffRef(1,i) = parsed_vec[i];
    }

    // read the file
    if (file.is_open()) {
        while (getline(file,'\n')) {
            std::stringstream ss(line);
            data.push_back(new RowVector(1,cols));
            uint i = 0;
            while (getline(ss,')) {
                data.back()->coeffRef(i) = Scalar(std::stof(&word[0]));
                i++;
            }
        }
    }
}

解决方法

getline 的第三个参数是单个字符(见下文)。当您传递它 ',' 时,您试图在单引号中传递两个字符。

https://www.cplusplus.com/reference/string/string/getline/

istream& getline (istream& is,string& str,char delim);

将您的分隔符更改为仅 ','(单个字符),您应该没问题。

如果您对单引号和双引号感兴趣,以及当您在单引号中放置多个字符时会发生什么,以下帖子有一些很好的讨论。 (Single quotes vs. double quotes in C or C++)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。