2017-06-07 10 views
1

Update: Danke für den Hinweis! Const von meinen Funktionsparametern entfernen und #include durch #include ersetzen, funktioniert!C++ - Fehler: keine übereinstimmende Funktion für den Aufruf von 'getline' aus innerhalb der Funktion, aber funktioniert in Main


Ich bin neu in C++ und ich habe mehrere Beiträge nachgeschlagen, aber kann nicht scheinen, um herauszufinden, warum ich einen „Fehler: keine passende Funktion für Aufruf von‚getline‘“ bin immer von innen meine benutzerdefinierte Funktion, wenn es von der Hauptfunktion gut funktioniert.

Ich verstehe nicht, warum auch in einigen Beispielen, die ich online getline 2 Paramater nimmt (std :: istream &, std :: string &) und es dauert drei Parameter in anderen gesehen habe (std :: istream & std :: string &, char)

mein Gehirn für eine Lösung gewesen Abstich, schätzen würde wirklich, wenn jemand kann darauf hinweisen, was mir fehlt. Entschuldigung, wenn das eine naive Frage ist!

kondensierte Code:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <fstream> 
#include <iostream> 
#include <cstdlib> 

using namespace std; 

char *myfunction (std::ifstream& infile, const std::string& strBuf){ 

     //compile error "no matching function for call to 'getline'" 
     getline(infile, strBuf); 

     char *ptr= NULL; 
     return ptr; 
    } 



    int main() { 
     ifstream infile; 
     infile.open("myfile"); 
     std::string strBuf; 

     getline(infile, strBuf); 
     // prints the first line of the file as expected 
     cout << strBuf << endl; 

    } 
+1

Sie '# include vergessen, hinzuzufügen' – PaulMcKenzie

Antwort

4

Sie können nicht auf ein const Objekt lesen.

Ändern Sie den Argumenttyp von const std::string& in nur std::string&.

char *myfunction (std::ifstream& infile, std::string& strBuf) 
            // ^^ No const 
{ 
    getline(infile, strBuf); 
    ... 
} 

Auch, wie in einem Kommentar erwähnt, vergessen Sie nicht

#include <string> 
Verwandte Themen