我想通过使用C++读取CSV文件,所以这里是我的代码
int main(){
ifstream classFile("class.csv");
vector<string> classData;
while (getline(classFile, line,',')) // there is input overload classfile
{
classData.push_back(line);
}
}
我的问题是:我的问题是,当它读取每行的最后一列时(因为它不是由逗号分隔的),它读取最后一列数据和下一行数据的第一个,例如,如果我的数据是这样的,
className,classLocation,Professor c++,Library,John
然后它读起来像className/ classLocation/ Professor c++/ Library / John
有没有办法把最后一列和下一行的第一列分开?谢谢你,很抱歉这是混乱的
4条答案
按热度按时间j2datikz1#
逐行读取文件:
将每一行传递到istingstream并读取字段:
免责声明:这是对csv文件的简化解析。
pbpqsu0x2#
对不起,我能在这条线里插点纯C吗?
阅读csv很清楚:
当然,它应该在C++工作的地方工作。
在
while
中,我们检查fscanf找到了多少个对象:fscanf(fp, "%g,%g\n", &f1, &f2) == 2
-- fscanf返回找到的对象数。我希望这可能对某人有所帮助。
(And如果有人想看到更多关于
fscanf
和阅读文件的信息--请留下一些评论。)ohtdti5x3#
如果您有兴趣在
main
部分中调用void
函数,请查看以下代码:我的
.csv
文件是IMU传感器提供的数据集,用逗号分隔:9vw9lbht4#
我发现的所有函数都不支持转义字符,也不考虑将
,
(如Unicode字符)以外的任何字符作为分隔符,尽管后者经常用于普通字符串。这是我的DSV-reader版本,它支持转义。它可以转义分隔符,转义字符和换行符。您可以通过检查列索引i
手动转换类型。示例用法:
示例的输出: