2013-05-24 5 views
0

У меня есть текстовый файл, с большим количеством строк, который идет как это:Чтение целых чисел из файлов в Qt

1,1 
2 
7,7 
11,11 

13,13 

0,0 

Я хотел бы принять все целое и присвоить его переменной, используя текстовый файл системы, Qt. Я думал о чтении каждой строки, затем используя QString::split(), но я думаю, что для этого есть более простые способы.

+5

'std :: ifstream' является хорошей отправной точкой. –

+0

Что именно вы хотите, чтобы результаты выглядели? Вы просто хотите получить массив ints? Массив строк, каждый из которых является массивом ints? Или что? – abarnert

+0

Кроме того, у вас действительно есть строки с разным количеством значений, или это '2' само по себе является ошибкой? Если ваши данные являются CSV, существует множество [CSV-решений для Qt] ((http://qt-project.org/search/tag/csv))) уже построены, но это может вам не помочь. – abarnert

ответ

1

Используйте QFile :: readAll, передайте его в конструктор QString, разделите его на QStringList, проведите через него с помощью функции toInt.

Отредактировано в соответствии с вашими задачами, это простое приложение для консольного тестирования (я бы предположил, что строка с номером 2 является ошибкой, и каждая строка должна содержать как минимум два номера).

main.cpp:

QFile f("file.txt"); 
f.open(QIODevice::ReadOnly); 
foreach (QString i,QString(f.readAll()).split(QRegExp("[\r\n]"),QString::SkipEmptyParts)){ 
    QPoint pos; 
    pos.setX(i.section(",",0,0).toInt()); 
    pos.setY(i.section(",",1,1).toInt()); 
    // draw something here, pos holds your coords in x as first valur and in y second (pos.x(), pos.y()) 
    qDebug()<<pos; 
} 
f.close(); 

ваши Coords проведут QPoint поз, она будет иметь одну строки за один координаты времени, так что вы можете рисовать точки или делать все, что вы хотите с ними. file.txt должен быть в директории с двоичным файлом или вы можете изменить его по своему усмотрению.

Смежные вопросы