Maison > développement back-end > C++ > Pourquoi `ifstream::open(std::string)` échoue-t-il dans les anciennes versions C ?

Pourquoi `ifstream::open(std::string)` échoue-t-il dans les anciennes versions C ?

Susan Sarandon
Libérer: 2024-12-10 03:17:10
original
445 Les gens l'ont consulté

Why Does `ifstream::open(std::string)` Fail in Older C   Versions?

Aucune fonction de correspondance : ifstream::open(std::string)

Dans le code C contenant la ligne suivante :

file.open(name);
Copier après la connexion

une erreur courante est :

no matching function for call 'std::ifstream::open(std::string&)'
Copier après la connexion

Ce problème se pose car les anciennes versions de C (antérieures à C 11) ne prenaient pas en charge l'ouverture d'un fichier à l'aide d'un argument std::string. La fonction open() nécessitait un tableau de caractères ou une chaîne de style C.

Solution

Pour résoudre cette erreur, vous pouvez utiliser l'une des approches suivantes :

  • Convertissez la std::string en une chaîne de style C à l'aide de c_str() méthode :
file.open(name.c_str());
Copier après la connexion
  • Utilisez le constructeur pour la classe ifstream, comme indiqué ci-dessous :
std::ifstream file(name.c_str());
Copier après la connexion

Cette approche élimine le besoin de séparer la construction et ouverture.

De plus, pour s'assurer que la fonction loadNumbersFromFile() ne modifie pas son argument, il convient de passer par référence à une constante std::string à la place :

std::vector<int> loadNumbersFromFile(const std::string& name)
{
    // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal