如何解决没有“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 举报,一经查实,本站将立刻删除。