2013-05-14 4 views
13

Dies ist der Teil des Codes mit einem Fehler:keine passende Funktion - ifstream open()

std::vector<int> loadNumbersFromFile(std::string name) 
{ 
    std::vector<int> numbers; 

    std::ifstream file; 
    file.open(name); // the error is here 
    if(!file) { 
     std::cout << "\nError\n\n"; 
     exit(EXIT_FAILURE); 
    } 

    int current; 
    while(file >> current) { 
     numbers.push_back(current); 
     file.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    } 
    return numbers; 
} 

Und gut, ich habe Art keine Ahnung, was los ist. Die ganze Sache kompiliert in VS richtig. Allerdings muss ich das mit dev cpp kompilieren.

Ich habe die Zeile werfen Fehler im obigen Code auskommentiert. Die Fehler sind:

keine passende Funktion für Aufruf 'std :: basic_ifstream :: open (std :: string &)
keine passende Funktion für Aufruf' std :: basic_ofstream :: open (std :: string &)


in verschiedenen Teilen des Codes ich Fehler wie bekommen ‚numeric_limits ist kein Mitglied von std‘ oder ‚max() wurde nicht deklariert‘, obwohl sie in iostream Klasse existieren und alles funktioniert in VS.


Warum erhalte ich diesen Fehler?

+0

Haben Sie geeignete Includes? Haben Sie Ihr Include und enthalten ? – RandyGaul

+0

Ja, natürlich tue ich – user2252786

+0

Nicht beleidigt sein, das ist häufig der genaue Grund :) – RandyGaul

Antwort

31

Wechseln zu:

file.open(name.c_str()); 

oder einfach nur den Konstruktor verwenden, da es keinen Grund Konstruktion zu trennen ist und offen:

std::ifstream file(name.c_str()); 

Unterstützung für std::string argument wurde in C++ hinzugefügt 11.

Als ändert nicht sein Argument übergeben durch std::string const&, um diese Tatsache zu dokumentieren und unnötige Kopie zu vermeiden.

+0

Danke, es funktioniert jetzt. – user2252786