将值从csv文件插入到Qt中的向量时出错

时间:2013-04-20 20:17:27

标签: c++ qt csv

QVector <QString> frequency;
QVector <QString> gain;
QString ref_data;
QStringList rowOfData;
QStringList rowData;

if (ReferenceData.open(QIODevice::ReadOnly | QIODevice::Text)) {
    ref_data = ReferenceData.readAll();
    rowOfData = ref_data.split("\n");
    ReferenceData.close();
}

for (int x = 9; x < rowOfData.size(); x++) {
    rowData = rowOfData.at(x).split(",");
    frequency.push_back(rowData[0]);
    gain.push_back(rowData[1]);
}

我从文件中读取了所有数据。当我使用push_back时,出现错误QList<T>::operator[] "index out of range"。我还使用了frequency.push_back(rowData.at(0));,然后我收到QList<T>::at "index out of range"错误!

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

后期循环应处理坏行,例如像这样,只需使用调试打印跳过它们:

for (int x = 9; x < rowOfData.size(); x++) {
    rowData = rowOfData.at(x).split(",");
    if (rowData.size() >= 2) {
        frequency.push_back(rowData[0]);
        gain.push_back(rowData[1]);
    }
    else qDebug() << "Skipping bad row" << x << rowOfData.at(x);
}