我想从.csv文件中的特定列中提取数据。
我可以使用.first()
提取第一列,但是如何从第7列或第9列提取数据。
static void ReadCSVData(QString fileName, std::vector<float>& data) {
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
file.readLine(); // read first line and ignore
while (!file.atEnd()) {
QString line = file.readLine(); // read wavelength line and store it
QString fields = line.split(',').first();
data.push_back(fields.toFloat());
}
file.close();
}
有什么方法可以将整个数据作为vector
获取,并通过传递列号我可以获取该特定列的数据吗?
答案 0 :(得分:0)
这就像使用QString::split()
获取列列表一样简单。
const QStringList fields { line.split(',') };
const QString column3 { fields[2] };
那就是说,我建议不要重新发明轮子:使用已经过测试的CSV解析库并覆盖角落案例。令人惊讶的是,Qt不支持这种通用格式,所以我建议qtcsv。