没有 "getline" 的实例匹配参数列表

no instance of "getline" matches the argument list

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

完整代码如下:

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, line, '\n')) {
            std::stringstream ss(line);
            data.push_back(new RowVector(1, cols));
            uint i = 0;
            while (getline(ss, word, ', ')) {
                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);

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

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