问题描述
我正在使用 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++)