2013-04-20 1 views
0
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"!Ошибка ввода значений из файла csv в вектор в Qt

Как решить эту проблему?

+0

Что ROWDATA, частота и получить? –

+0

Я сделаю редактирование –

+1

Вы запустили свой код в отладчике? Вы проверили значение 'rowOfData.at (x)'? Вы проверили, что 'rowData' действительно содержит как минимум два значения? – 2013-04-20 20:29:27

ответ

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); 
} 
Смежные вопросы