jeudi 25 août 2016

How does one correctly store data into an array struct with stringstream?

I was wondering how to store data from a CSV file into a structured array. I realize I need to use getline and such and so far I have come up with this code:

This is my struct:

struct csvData //creating a structure
{
     string username; //creating a vector of strings called username
     float gpa; //creating a vector of floats called gpa
     int age; //creating a vector of ints called age
};

This is my data reader and the part that stores the data:

csvData arrayData[10];
string data;
ifstream infile; //creating object with ifstream
infile.open("datafile.csv"); //opening file
if (infile.is_open()) //error check

int i=0;
while(getline(infile, data));
{
    stringstream ss(data);
    ss >> arrayData[i].username;
    ss >> arrayData[i].gpa;
    ss >> arrayData[i].age;
    i++;
}

Further, this is how I was attempting to print out the information:

for (int z = 0; z<10; z++)
    {
        cout<<arrayData[z].username<<arrayData[z].gpa<<arrayData[z].age<<endl;
    }

However, when running this command, I get a cout of what seem to be random numbers:

1.83751e-0383 03 4.2039e-0453 1.8368e-0383 07011688

I assume this has to be the array running not storing the variables correctly and thus I am reading out random memory slots, however, I am unsure.

Lastly, here is the CSV file I am attempting to read.

username,gpa,age
Steven,3.2,20
Will,3.4,19
Ryan,3.6,19
Tom,3,19

Thank you for any help.

Aucun commentaire:

Enregistrer un commentaire