IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

strcomp() error C2664: 'strcmp'


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 84
    Par défaut strcomp() error C2664: 'strcmp'
    Error 1 error C2664: 'strcmp' : cannot convert parameter 1 from 'std::string' to 'const char *'

    Scenario: La personne est amené à répondre oui/non à une question, je place cela dans sRap qui est un object string, ensuite je fais un test qui foire...

    Je viens du java, je veux tout simplement comparer deux chaines de carateres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cout << "Voulez-vous le service rapide?[oui/non]:\n";
    		cin >> sRap;
     
    		bool valide = false;
    	 while(valide == false){
    		if( strcmp(sRap,'oui') ==0 || strcmp(sRap,"o") ==0){ //Bug ici...
    			sRap = "oui";
    			valide = true;
    		}
    		else if( sRap == "non" || sRap == "n"){
    			sRap = "non";
    			valide = true;
    		}else{
    			cout << "Voulez-vous le service rapide?[oui/non]:\n";
    			cin >> sRap;
    	 }

  2. #2
    Sub
    Sub est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Par défaut
    strcmp prends un char* et tu lui passe un std::string. Remplace sRap par sRap.c_str() dans la fonction strcmp.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    std::string possède un opérateur == et une fonction interne compare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(( sRap=="oui") || (sRap.compare("o")==0)){

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 84
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    std::string possède un opérateur == et une fonction interne compare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(( sRap=="oui") || (sRap.compare("o")==0)){
    Je viens du Java, j'utilisait str.equals(str2) pour comparer de façon correct les string au lieu d'utiliser ==, est-ce pareille en c++?

    Secondo, j'utilise présentement VS 2005 pour mes projets c++, y a t'il un éditeur similaire à eclipse qui "highlight" les erreurs dynamiquement?

    Merci encore.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    L'opérateur == de la classe std::string compare les chaines en respectant la case (mais c'est le aussi le cas de strcmp)...

    "Oui"=="oui" renvoie donc false si ce sont les valeurs de deux std::string

    Je ne sais plus si equals fait cette différence en java
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 84
    Par défaut
    Dernière question, j'ai besoin de rendre le input de l'utilisateur en lower case, j'ai vue la méthode toLower(), mais elle semble ne fonctionner que sur des tableaux de charatères?

    Comment suis-je supposer procéder si j'utilise le type "string"?

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C++ error C2664 appel de fonction
    Par lightalex01 dans le forum C++
    Réponses: 4
    Dernier message: 05/02/2012, 22h23
  2. Bus error et strcmp
    Par scls19fr dans le forum Débuter
    Réponses: 4
    Dernier message: 18/04/2009, 15h05
  3. error C2664: 'SetConsoleTitleW'
    Par pi-2r dans le forum C
    Réponses: 3
    Dernier message: 27/08/2007, 10h38
  4. [CR] Print Engine error text
    Par afaraji dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2002, 15h44
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo