Qt分离CSV文件并存储到不同的变量

时间:2018-12-04 05:14:34

标签: c++ qt visual-c++ c++14 c++17

#include <QCoreApplication>
#include"administrative.h"
#include"employee.h"
#include"technical.h"
#include<iostream>
#include<string>
#include<QVector>
#include<QFile>
#include<QTextStream>
#include<fstream>
using namespace std;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QFile t("C:\\Users\\User006\\Documents\\EmployeeCSV_Vector\\technical.csv");

        if (!t.open(QFile::ReadOnly | QFile::Text))
            cout << "ERROR: File open";

        QTextStream in(&t);
        while (!in.atEnd())
        {
                         QString line=in.readLine();
           for (int i=0;i<line.size();i++)
            {
               QString item=line.split(",");
                QString name=item;
                QString empCode=item;
                QString designation=item;
                QString prCode=item;
                QString BP=item;
                QString DA=item;
                QString PA=item;
                cout<<name.toStdString()<<"\t";

            }

 }
 t.close();

这是代码。请帮助我做到这一点。 technical.csv文件包含一些用逗号分隔的值,它是一个csv文件。我需要在每个行中分别使用不同的变量值。请为我提供帮助。谢谢

2 个答案:

答案 0 :(得分:0)

根据文件结构(它是否包含行/列标题,单行/多行?),您可以使用QString::split()获得每行QStringList。然后,根据您的csv结构知识将字符串列表项分配给变量。

答案 1 :(得分:0)

我想知道您的代码是否正在编译。根据Qt,QString :: split方法返回一个QStringList。拆分后,您将在列表中找到项目。假设所有列均符合预期,则可以按以下方式解释文件:

   QTextStream in(&t);
    while (!in.atEnd())
    {
       QStringList items = in.readLine().split(',');
       QString name = items.at(0);
       ...
       QString PA   = items.at(6); 
       std::cout<<name.toStdString()<<std::endl;
       // do some processing 
    }