Maison >développement back-end >C++ >Pourquoi mon `ifstream.open()` ne fonctionne-t-il pas avec une chaîne en Dev-C ?
Fonction d'ouverture introuvable pour ifstream dans dev cpp
Le code fourni tente d'ouvrir un fichier en utilisant file.open(name), où le nom est une chaîne. Cependant, ce code se compile avec succès dans Visual Studio (VS) mais pas dans dev cpp. Le message d'erreur indique qu'il n'existe aucune fonction correspondante pour la méthode open avec un argument de chaîne.
La cause première de ce problème est que la prise en charge de l'utilisation d'un argument de chaîne dans la fonction open n'a été introduite qu'en C 11. . Bien que VS prenne en charge C 11, dev cpp semble utiliser une ancienne version du standard C, qui ne l'inclut pas. fonctionnalité.
Solution :
Pour résoudre ce problème, il existe deux approches :
Utilisez c_str( ): Convertissez l'argument de chaîne en un tableau de caractères à l'aide de la méthode c_str() et transmettez ce tableau à l'open function :
file.open(name.c_str());
Utiliser le constructeur : Vous pouvez également utiliser le constructeur d'ifstream qui prend un argument de chaîne :
std::ifstream file(name.c_str());
De plus, pour éviter les copies inutiles, il est recommandé de passer l'argument chaîne à loadNumbersFromFile() par constante référence :
std::vector<int> loadNumbersFromFile(std::string const& name)
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!