Probleme mit getline()



  • Habe Probleme beim einlesen einer Datei. Genauer gesagt mit der getline Funktion:

    int const Sensor::GetRevolutions(std::ifstream & infile) const
    {
    	string str;
    	infile.getline(infile,str);
    	int revolution;
    	istringstream (str) >> revolution;	//convert string to int
    	return revolution;
    }
    

    ich bekomme nämlich ständig den compilererror c2664
    Error 1 error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'std::ifstream' to 'char *'

    2 IntelliSense: no instance of overloaded function "std::basic_ifstream<_Elem, _Traits>::getline [with _Elem=char, _Traits=std::char_traits<char>]" matches the argument list

    außerdem hat bei uns der tutor bei den rückgabewerten immer const& als anmerkung geschrieben (rückgabewert keine membervariable) getan, wobei es mit dem referenz noch weniger geht :9 was hat das überhaupt für einen sinn?

    Woran kann der obige Fehler zustande kommen?


  • Mod

    Du musst die globale Version von getline verwenden:

    std::getline(infile, str);
    


  • hmmm es geht 🙂 aber wenn das vom ifstream nicht geht, wieso ist es dann überhaupt darin enthalten?

    und kannst du mir bllt das mit dem cnst & auch erläutern?

    mfg
    ACnut


  • Mod

    aber wenn das vom ifstream nicht geht, wieso ist es dann überhaupt darin enthalten?

    Das ist offensichtlich für etwas anderes gedacht - nämlich das Einlesen über einen C-String. Genaueres erfährst du hier.

    außerdem hat bei uns der tutor bei den rückgabewerten immer const& als anmerkung geschrieben (rückgabewert keine membervariable)

    Das kann nicht stimmen, da verstehst du bestimmt etwas falsch. Standardmäßig Referenzen zurückzugeben ist Unsinn.



  • Arcoth schrieb:

    Das ist offensichtlich für etwas anderes gedacht - nämlich das Einlesen über einen C-String. Genaueres erfährst du hier.

    außerdem hat bei uns der tutor bei den rückgabewerten immer const& als anmerkung geschrieben (rückgabewert keine membervariable)

    Das kann nicht stimmen, da verstehst du bestimmt etwas falsch. Standardmäßig Referenzen zurückzugeben ist Unsinn.

    hmmm ok danke 🙂

    oder es ist ein grund, einen punkt wieder zurückzuholen 😋


Anmelden zum Antworten