首页 > 解决方案 > 如何读取从 csv 存储的数据

问题描述

我正在尝试学习如何从 .csv 文件中读取数据。代码显示来自 csv 文件的数据是逐行读取的。将数据存储在 variable 后 string arrival;,将获取来自的子字符串,arrival但我一直坚持如何从每一行获取第一列的子字符串。是否有另一种方法可以从 csv 读取数据?这是输出

#include<iostream>
#include<fstream>
#include<string>
#include<string.h>
#include<exception>
#include<sstream> 

using namespace std;

int main()
{
    string arrival,burst[1000];
    char string[] ="Job";

    char *tokenptr;


    int x=0;

    tokenptr = strtok(string," ");


    ifstream jobfile("job.csv");

    if(jobfile.is_open())
    {
    cout << "Successfully open file"<<endl;

    while(jobfile!=NULL)
    {
        getline(jobfile,arrival,',');
        cout << arrival << endl;
        try
        {
            if(arrival.length() < 30)
            {
            std::string jobstr = arrival.substr (28,1); //To take substring from arrival
            stringstream job(jobstr);
            int jobArr; // To convert string into integer
            job >> jobArr;
            cout<<"Job Arrival = " << jobArr <<endl;
            }

            if(arrival.length() == 30)
            {
                std::string jobstr = arrival.substr (29,2);
                stringstream job(jobstr);
                int jobArr; 
                job >> jobArr;
                cout<<"Job Arrival = " << jobArr <<endl;
            }

            if(arrival.length() > 30)
            {
                std::string jobstr = arrival.substr (30,2);
                stringstream job(jobstr);
                int jobArr = 0; 
                job >> jobArr;
                cout<<"Job Arrival = " << jobArr <<endl;
            }
        }
        // To check exception
        catch (std::exception const &exc) 
        {
            std::cerr << "Exception caught " << exc.what() << "\n";
        }
        catch (...)
        {
            std::cerr << "Unknown exception caught\n";
        }


        for(int i=0;i < 4;i++)
        {
            getline(jobfile,burst[i],',');
            cout<<burst[i]<<endl;
        }

        tokenptr=strtok(NULL," ");
        if(tokenptr==0)
        {
            x+=1;   
        }
    }

    cout<<"Number of Job ="<< x <<endl;
    }
    jobfile.close();

}

标签: c++filestore

解决方案


推荐阅读