Comment comparer des chaînes avec des caractères const *?
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string cmd;
while(strcmp(cmd.c_str(),"exit")==0 && strcmp(cmd.c_str(),"\exit")==0)
{
cin>>cmd;
cout<<cmd;
}
return 0;
}
Je suis coincé.
source d'informationauteur arzeth
Vous devez vous connecter pour publier un commentaire.
Après correction de quelques petits bugs, cela fonctionne sur ma machine:
Cependant, je me demande pourquoi vous voulez utiliser
std::strcmp()
à tous. Comme vous l'avez constaté, il n'est pas aussi facile à utiliser que lestd::string
classe. Cettefonctionne tout aussi bien, est plus facile à comprendre, et donc plus faciles pour obtenir le droit.
strcmp
renvoie 0 quand ils sont égaux. Donc, je pense que vous voulez != 0Sûrement
strcmp
de ne pas retourner 0 pour les deux, car il ne peut pas être égal à deux.Aussi il semble que vous avez une barre oblique inverse au début de votre chaîne, vous devez vous échapper avec une double barre oblique inverse.
L'état de votre temps ne sera jamais évaluer à
true
parce que vous faites des tests pour vérifier la cmd chaîne est égale à"exit"
et"\\exit"
. Une chaîne ne peut jamais être égal à deux valeurs en même temps.Votre problème en conditions.
Vous allez probablement vouloir le faire sortir de la boucle lorsque l'utilisateur entre la sortie, de sorte que vous devez utiliser:
Juste quelques choses à garder à l'esprit, je suis en reprenant certaines des suggestions qui sont la peine de répéter tout(1) fois.
Vous êtes à l'aide de C++, il est orienté objet, c'est à dire, de Son mieux pour combiner les données et la fonction qui fonctionne sur elle. Dans ce cas, utilisez la chaîne de comparer les options fournies par classe string plutôt que de strcmp.
Il y a une erreur de logique dans votre programme, il va compiler, mais je crains que ce n'est pas ce que vous voulez. si ( a == x && a == o ) ce sera toujours fausse, comme l'un ne peut pas être égal à x et y, à moins que x=y, dans votre cas, il est clair x!=y.
Cheers,
Pavan