C++ Erreur variable

Fermé
HTML BOY - Modifié par HTML BOY le 20/02/2011 à 15:06
 HTML BOY - 20 févr. 2011 à 18:52
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

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
20 févr. 2011 à 15:27
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,
0
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*)'|
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
20 févr. 2011 à 16:39
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,
0
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 ...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
20 févr. 2011 à 17:47
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,
0
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 !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
Modifié par fiddy le 20/02/2011 à 18:07
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.
0
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 ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
20 févr. 2011 à 18:34
A la place de cin>> fichier, mets : getline(cin,fichier);
0
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; 
}
0