c++ Read from .csv file -


i have code supposed cout in console information .csv file;

while(file.good()) {      getline(file, id, ',');     cout << "id: " << id << " " ;       getline(file, nome, ',') ;     cout << "user: " << nome << " " ;      getline(file, idade, ',') ;     cout << "idade: " << idade << " "  ;       getline(file, genero, ' ') ;      cout << "sexo: " <<  genero<< " "  ;  } 

and csv file has (when open notepad):

0,filipe,19,m  1,maria,20,f  2,walter,60,m 

whenever run program console display this:

unexpected output

my question why isn't program repeating cout messages in every line instead of in first 1

btw , nome name, idade age, , genero/sexo gender, forgot translate before creating post

you can follow this answer see many different ways process csv in c++.

in case, last call getline putting last field of first line , of remaining lines variable genero. because there no space delimiter found until end of file. try changing space character newline instead:

    getline(file, genero, file.widen('\n')); 

or more succinctly:

    getline(file, genero); 

in addition, check file.good() premature. last newline in file still in input stream until gets discarded next getline() call id. @ point end of file detected, check should based on that. can fix changing while test based on getline() call id (assuming each line formed).

while (getline(file, id, ',')) {     cout << "id: " << id << " " ;       getline(file, nome, ',') ;     cout << "user: " << nome << " " ;      getline(file, idade, ',') ;     cout << "idade: " << idade << " "  ;       getline(file, genero);     cout << "sexo: " <<  genero<< " "  ; } 

for better error checking, should check result of each call getline().


Comments

Popular posts from this blog

java - Jmockit String final length method mocking Issue -

asp.net - Razor Page Hosted on IIS 6 Fails Every Morning -

c++ - wxwidget compiling on windows command prompt -