Ceci est la partie du code avec une erreur:
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;
}
Et bien, j'ai un peu aucune idée de ce qui se passe. Le tout est compilé correctement dans vs. Cependant, j'ai besoin de compiler cela avec Dev CPP.
J'ai commenté la ligne de lancement des erreurs dans le code ci-dessus. Les erreurs sont:
no matching function for call 'std::basic_ifstream<char>::open(std::string&)
no matching function for call 'std::basic_ofstream<char>::open(std::string&)
Dans différentes parties du code, je reçois des erreurs comme numeric_limits is not a member of std
Ou max() has not been declared
, bien qu'ils existent dans iostream
classe et tout fonctionne dans vs.
Pourquoi suis-je cette erreur?
Changer de:
file.open(name.c_str());
ou utilisez simplement le constructeur car il n'y a aucune raison de séparer la construction et ouverte:
std::ifstream file(name.c_str());
Prise en charge de std::string
Argument a été ajouté à C++ 11.
Comme loadNumbersFromFile()
ne modifie pas son argument passe par std::string const&
Pour documenter ce fait et éviter une copie inutile.