2013-05-14 11 views
13

Questa è la parte del codice con un errore:Nessuna funzione di corrispondenza - 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; 
} 

E bene, io tipo di ho idea di cosa sta succedendo. L'intera cosa si compila correttamente in VS. Comunque ho bisogno di compilarlo con dev cpp.

Ho commentato la riga che generava errori nel codice sopra. Gli errori sono:

alcuna funzione di corrispondenza per la chiamata 'std :: :: basic_ifstream aperta (std :: string &)
alcuna funzione di corrispondenza per la chiamata' std :: :: basic_ofstream aperta (std :: string &)


in diverse parti del codice che ricevo errori come 'numeric_limits non è un membro di std', o 'max() non è stato dichiarato', anche se esistono in classe iostream e tutto funziona in VS.


Perché viene visualizzato questo errore?

+0

Avete inclusi nel prezzo? Hai incluso lo e includi ? – RandyGaul

+0

Sì, certo che faccio – user2252786

+0

Non essere offeso, che è comunemente il motivo esatto :) – RandyGaul

risposta

31

Passa a:

file.open(name.c_str()); 

o semplicemente utilizzare il costruttore in quanto non v'è alcuna ragione di separare la costruzione e aperto:

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

supporto per std::string argument è stato aggiunto in C++ 11.

Come loadNumbersFromFile() non modifica l'argomento passare std::string const& per documentare tale fatto ed evitare la copia non necessaria.

+0

Grazie, ora funziona. – user2252786

Problemi correlati