从QT C ++中的csv文件中获取特定列

时间:2017-10-23 23:24:50

标签: c++ qt csv

我想从.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获取,并通过传递列号我可以获取该特定列的数据吗?

1 个答案:

答案 0 :(得分:0)

这就像使用QString::split()获取列列表一样简单。

const QStringList fields { line.split(',') };
const QString column3 { fields[2] };

那就是说,我建议不要重新发明轮子:使用已经过测试的CSV解析库并覆盖角落案例。令人惊讶的是,Qt不支持这种通用格式,所以我建议qtcsv