Here I have an excel file whose first column has ID's i.e: ID 12 32 45 12 .. There are other columns as well but I only want to read the data present in first column i.e. ID.
Here is my code which throws exception. I don't know why?
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <vector>
#include <algorithm> 
#include<string>
#include<cstdlib>
//std::find
#include<cstring>
using namespace std;
int main()
{
   
    ifstream fin("1.csv");
    string line;
    int rowCount = 0;
    int rowIdx = 0; //keep track of inserted rows
    //count the total nb of lines in your file
    while (getline(fin, line)) {
        rowCount++;
    }
    //this will be your table. A row is represented by data[row_number].
    //If you want to access the name of the column #47, you would
    //cout << data[0][46]. 0 being the first row(assuming headers)
    //and 46 is the 47 column.
    //But first you have to input the data. See below.
    std::vector<std::vector<std::string>> data;
    fin.clear(); //remove failbit (ie: continue using fin.)
    fin.seekg(fin.beg); //rewind stream to start
    while (getline(fin, line)) //for every line in input file
    {
        stringstream ss(line);  //copy line to stringstream
       string value;
        
        while (getline(ss, value, ',')) {       //for every value in that stream (ie: every cell on that row)
            data[rowIdx].push_back(value);//add that value at the end of the current row in our table
        }
        rowIdx++;   //increment row number before reading in next line
    }
fin.close();
//Now you can choose to access the data however you like.
//If you want to printout only column 47...
int colNum;
string colName = "ID";
//1.Find the index of column name "computer science" on the first row, using iterator
//note: if "it == data[0].end()", it means that that column name was not found 
vector<string>::iterator it = find(data[0].begin(), data[0].end(), colName);
//calulate its index (ie: column number integer)  
colNum = std::distance(data[0].begin(), it);
//2. Print the column with the header "computer science"
for (int row = 0; row < rowCount; row++)
{
    cout << data[row][colNum] << "\t";  //print every value in column 47 only
}
cout << endl;
return 0;
}
Kindly help me to fix the issue. I want to display only first column which contain ID's.