Reading a file with getline function, but first column appears empty

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I'm trying to read a file and write the data I read into a structure. With the getline function, i read the whole line, and then divide it in columns. Each term goes into an argument of the structure, and each line is a new instance of the structure. The problem is that my first column is empty.

The folowing code works partially, I read the whole file, all the other columns work perfectly but the first one is filled with nothing.

this is my structure and the data I put into it :

struct employe {
    int num_employe;
    string nom;
    string prenom;
    string date_naissance;
    string ville_resi;
    int code_postal;
};


employe saisir_1_employe(vector row) {
    employe e;
    e.num_employe = stoi(row[0]);
    e.nom = row[1];
    e.prenom = row[2];
    e.date_naissance = row[3];
    e.ville_resi = row[4];
    e.code_postal = stoi(row[5]);
    return (e);
}

I extract the data from the file like this :

if (myfile.is_open()) {
        while (myfile >> temp) {

            row.clear();

            // read an entire row and
            // store it in a string variable 'line'
            getline(myfile, line, '\n');

            istringstream s(line);

            // read every column data of a row and
            // store it in a string variable, 'word'
            while (getline(s, word, '\t')) {

                // add all the column data
                // of a row to a vector
                row.push_back(word);
            }
            e = saisir_1_employe(row);
            afficher_1_employe(e);
        }

    }

my file I extract the data from looks like this : https://pastebin.com/Nfhu2tEp

When I display the second column (cout << row[1]) i get the names perfectly. But when I do cout << row[0] i get an empty column when it is supposed to be a string that I then convert to an int with e.num_employe = stoi(row[0]). It's there and has the right number of lines but just empty.

profilepic.png
manpreet 2 years ago

I think you should loop like this

while(std::getline(myfile, line, '\n'))

instead of

while (myfile >> temp)

which is cutting away the first word in every line 


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.