C++ Erreur variable

Bonjour, ce code ne marche pas :

#include <cstdlib> 
#include <iostream> 
#include <fstream> 

using namespace std; 

int main() 
{ 

    string fichier; 

    cout << "Veuillez entrer le nom du fichier à supprimer :" << endl; 

    cin>>fichier; 

    if(!remove(fichier)=0) 
    { 
        cout << "Suppression du fichier effectué !" << endl; 
    } 
    else 
    { 
        cout << "Erreure lors de la supression !" << endl; 
    } 

    int pause; 

    cin>>pause; 

    return 0; 
} 


Seriez-vous m'expliquer pourquoi ?
Merci de vos futurs réponse !

4 réponses

  1. Contributeur
    Bonjour,

    La prochaine fois que tu as une erreur, n'hésite pas à copier coller le message d'erreur. Non seulement, il précise la ligne, mais en plus cela donne une idée de l'erreur.

    Dans ton cas, l'erreur vient de if(!remove(fichier)=0)
    En C++, l'opérateur de comparaison est == pas le simple =.
    Cdlt,
    1. Merci de ta réponse, mais cela m'affiche la même erreur :
      error: cannot convert 'std::string' to 'const char*' for argument '1' to 'int remove(const char*)'|
      
      1. Contributeur
        L'erreur est simple.
        L'argument doit être de type const char*, alors que toi tu y mets un string.
        Il faut que tu le convertisses en char* ou alors que tu mettes ta variable en tableau de char.
        Cdlt,
    2. Peux-tu parler en français STP ^^
      Non, sérieux, je ne comprend pas du tout le message que tu essayes de me faire passer !
      Désolé de mon manque de compréhension, mais je suis archi nul ...
      1. Contributeur
        Un peu d'anglais : error: cannot convert 'std::string' to 'const char*' for argument '1' to 'int remove(const char*)'
        Erreur : impossible de convertir 'std::string" en 'const char*' dans la fonction int remove(const char*).
        Effectivement, dans remove, il faut mettre une variable de type "const char*". Alors que toi tu as mis : string fichier, et non char fichier[20];

        Si tu comprends pas ce qu'est une variable, un type, un const char*, je te conseille d'aller sur le site du zéro pour apprendre les bases. Sans ça, tu resteras souvent bloquer.
        Cdlt,
      2. OK, bonne idée, j'y vais !
        Je pense que cela aurai était plus simple que tu me donnes le code,
        mais après tout en est sur un forum et qui dit forum dit se débrouiller un peu tout seul ^^
        En tout cas, merci de ton aide !
      3. Contributeur
        Je pense que cela aurai était plus simple que tu me donnes le code
        Ben je te l'ai donné...
        Alors que toi tu as mis : string fichier, et non char fichier[20];
        Dis autrement, remplace string fichier; par char fichier[20]; et cela devrait marcher.
    3. Merci !

      Don voici mon code mis à jour :

      #include <cstdlib>
      #include <iostream>
      #include <fstream>
      #include <string>
      
      using namespace std;
      
      int main()
      {
      
          char fichier[20];
      
          cout << "Veuillez entrer le nom du fichier à supprimer :" << endl;
      
          cin>>fichier;
      
          remove(fichier);
      
          cout << "La supression a été effectué avec succes !" << endl;
      
          int pause;
      
          cin>>pause;
      
          return 0;
      }


      Seulement les espaces tapé ne sont pas géré !!!
      Comment puis-je y remédier ?
      1. Contributeur
        A la place de cin>> fichier, mets : getline(cin,fichier);
      2. Ha, petite erreur :
        error: no matching function for call to 'getline(std::istream&, char [20])'
        Mais en cherchant un peu, j'ai trouvé sa :

        #include <cstdlib> 
        #include <iostream> 
        #include <fstream> 
        
        
        using namespace std; 
        
        int main() 
        { 
        
            string fichier; 
        
            cout << "Veuillez entrer le nom du fichier à supprimer :" << endl; 
        
            getline(cin,fichier); 
        
            const char * fichier2 = fichier.data (); 
        
            remove(fichier2); 
        
            cout << "La supression a été effectué avec succes !" << endl; 
        
            int pause; 
        
            cin>>pause; 
        
            return 0; 
        }