2017-12-03 1 views
-4

ich für Zeile eine Dateizeile lesen möchtenC++ lesen Zeile für Zeile Datei mit getline

void BookRepository::PopulateEntity(Book * book, std::ifstream * inputfileStream) 
    { 
     getline(inputfileStream, book->Id); 
getline(inputfileStream,book->Name); 
} 

So etwas ... aber ich einige Kompilierungsfehlern bekommen und ich weiß nicht, warum

Fehler C2784 ‚std :: basic_istream < _Elem, _Traits> & std :: getline (std :: basic_istream < _Elem, _Traits> &, std :: basic_string < _Elem, _Traits, _Alloc> &): std :: basic_istream < _Elem, _Traits> & 'von 'std :: ifstream'

Fehler C2784 'std :: basic_istream < _Elem, _Traits> & std' konnte nicht Template-Argument für ableiten' :: getline (std :: basic_istream < _Elem, _Traits> & &, std :: basic_string < _Elem, _Traits, _Alloc> &): std :: basic_istream < _Elem, _Traits> 'konnte nicht Template-Argument für ableiten' & & 'von 'std :: ifstream

+1

Sie haben wahrscheinlich Fehler in Ihrem Code. Zum einen ist 'inputfileStream' ein Zeiger und' getline' erwartet ein Objekt. Ändern Sie den Aufruf in 'std :: getline (* inputfileStream, book-> Id);'. Aber das ist nur eine Vermutung; Ohne ** echten Code ** ist es unmöglich vernünftig zu reagieren. –

+0

Zeigen Sie uns, welche Art von Fehlern Sie bekommen. – abdullah

+0

@abdullah bearbeitet – john

Antwort

1

Bitte überprüfen Sie das Format von std::getline. Es setzt Daten in eine std::string. So sollten Ihre book->Id und book->Namestd::string sein.

getline(*inputfileStream, book->Id); // if book->Id is string 
getline(*inputfileStream, book->Name); 

Oder Sie können in temporäre Zeichenfolgen lesen und später in Ihrem bevorzugten Datentyp konvertieren.