BlinCT
Сәуір 5, 2017, 1:02 Т.Қ.

Из файла со строковыми данными получить QPointF

Qt

Всем привет. Требуется из файла со строковыми данными получить на выходе данные типа QPointF чтобы к данным что в первом столбце в файле я обращаться мог как pointf.x() а к данным что были в другом столбце обращаться как pointf.y() Прикрепил файл с которого надо получать данные. Изначально данные грузились в тип:

QList<QPointF> loadPoints(QString file);

Но думаю что можно обойтись без этого.

cop.csv
2

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

1
Evgenii Legotckoi
  • Сәуір 5, 2017, 1:20 Т.Қ.
  • Жауап шешім ретінде белгіленді.

День добрый!
Так, это по сути разбор файла CSV. На сайте есть статья по работе с CSV файлами .

А применительно к вашей проблеме можно в качестве аргумента функции передавать путь к файлу, а возвращаемое значение сделать в виде данного списка.

void getPointsList(QString filePath)
{
    QFile file(filePath);
    QList<QPointF> pointsList; // Список, который будем возвращать

    if ( !file.open(QFile::ReadOnly | QFile::Text) ) {
        qDebug() << "File not exists";
    } else {
        // Создаём поток для извлечения данных из файла
        QTextStream in(&file);
        // Считываем данные до конца файла
        while (!in.atEnd())
        {
            // ... построчно
            QString line = in.readLine();
            QStringList coordinateStrList = line.split(','); // Разделяем строку на список чисел, получится два числа
            // Если строка была заполнена, то 
            if (coordinateStrList.length() > 0)
            {
                // то формируем точку 
                QPointF point(coordinateStrList.at(0).toDouble(), coordinateStrList.at(1).toDouble());
                pointsList.append(point);  // и добавляем её в список
            }
        }
        file.close();
    }

    return pointsList;
}

    Пікірлер

    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
    Кіріңіз немесе Тіркеліңіз