Maison >développement back-end >C++ >Pourquoi `ifstream::open()` ne fonctionne-t-il pas avec les arguments `std::string` ?

Pourquoi `ifstream::open()` ne fonctionne-t-il pas avec les arguments `std::string` ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-08 04:29:10928parcourir

Why Doesn't `ifstream::open()` Work with `std::string` Arguments?

Aucune fonction de correspondance pour ifstream open()

Le problème se pose dans l'extrait de code :

std::ifstream file;
file.open(name); // the error is here

Dev C rencontre des erreurs "aucune fonction correspondante pour l'appel 'std::basic_ifstream::open(std::string&)" et "aucune fonction correspondante pour l'appel 'std::basic_ofstream::open(std::string&)". Ces erreurs se produisent parce que la fonction open() dans ifstream attend une chaîne de style C comme argument, mais le code fournit un std::string.

Solution :

Pour résoudre ce problème, convertissez la std::string en une chaîne de style C à l'aide de la fonction membre c_str() :

file.open(name.c_str());

Alternativement, vous peut directement initialiser l'objet ifstream avec la chaîne de style C :

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

De plus, pensez à déclarer loadNumbersFromFile() comme suit :

std::vector<int> loadNumbersFromFile(const std::string& name)

Ce changement indique que la fonction ne modifier son argument et évite une copie inutile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn