Maison > développement back-end > C++ > Pourquoi mon `ifstream.open()` ne fonctionne-t-il pas avec une chaîne en Dev-C ?

Pourquoi mon `ifstream.open()` ne fonctionne-t-il pas avec une chaîne en Dev-C ?

Mary-Kate Olsen
Libérer: 2024-12-02 20:53:14
original
261 Les gens l'ont consulté

Why Doesn't My `ifstream.open()` Work with a String in 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 :

  1. 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());
    Copier après la connexion
  2. Utiliser le constructeur : Vous pouvez également utiliser le constructeur d'ifstream qui prend un argument de chaîne :

    std::ifstream file(name.c_str());
    Copier après la connexion

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&amp; 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