Я обычно читаю CSV-файл с <fstream>
lib и сохраняю эту информацию в vector<MyStruct>
lib, но в такого рода проекте мы должны использовать вызовы <QFile>
и <QTextStream>
, и я действительно не знаюкак это использовать, даже этот причудливый вектор QStringList
- что головная боль -.
Я хочу сделать CSV-таблицу в таблицу виджетов и сохранить всю информацию в векторе.это структура
struct Person
{
QString name;
int age;
double salary;
};
, и моя структура CSV выглядит так:
name,age,salary
name,age,salary
name,age,salary
это мой код до сих пор
persons[0].name = "Victor Ramos";
persons[0].age= 10;
persons[0].salary= 10000.0;
persons[1].name = "Ana Ramos";
persons[1].age= 15;
persons[1].salary= 12000.0;
int fila;
ui->tableWidget->insertRow(ui->tableWidget->rowCount());
fila = ui->tableWidget->rowCount() - 1;
ui->tableWidget->setItem(fila, NOMBRE, new QTableWidgetItem(nombre));
ui->tableWidget->setItem(fila, EDAD, new QTableWidgetItem(QString::number(edad)));
ui->tableWidget->setItem(fila, SALARIO, new QTableWidgetItem(QString::number(salario)));
Обычно я сделал бы это, еслиЯ работал с простым консольным приложением
#include <fstream>
#include <vector>
int main(){
vector<Person> persons; Person p;
istream file('myFile.csv');
string line;
if(!file.is_open()){ return 1; }else{
while(!file.eof()){
getLine(file, line, ',');
p.name = line;
getLine(file, line, ',';
p.edad = stoi(line);
getLine(file, line);
//string to float recive a string a return a float
p.salary = stringToFloat(line);
persons.push_back(p);
}
}
file.close();
/*Show vector persons with a simple for*/
}
Спасибо.