La comparaison de caractères dans un tableau de caractères avec strcmp

J'ai lu d'un fichier xml dans un char [] et je suis en train de comparer chaque élément de ce tableau avec certains caractères, tels que "<" et ">". Le char array "test" est juste un tableau d'un élément et contient le caractère à comparer (j'ai dû faire comme ceci ou le strcmp méthode pourrait me donner une erreur sur la conversion de char contre char*). Cependant, quelque chose est faux et je ne peux pas le comprendre. Voici ce que j'obtiens:

< est par rapport à: < strcmp valeur: 44

Une idée de ce qui se passe?

char test[1];   
for (int i=0; i<amountRead; ++i)
{
    test[0] = str[i];
    if( strcmp(test, "<") == 0)
        cout<<"They are equal"<<endl;
    else
    {
        cout<<test[0]<< " is being compare to: "<<str[i]<<" strcmp value= "<<strcmp(test, "<") <<endl;
    }

}
  • Vous devez comprendre les erreurs comme char à const char* et fixer avec votre compréhension, pas de hack autour d'elle. Aussi, nous montrant la sortie que vous obtenez n'est pas une erreur, nous n'avons aucune idée de ce qu'est réellement censée dire. 🙂 Enfin, c'est le C++! Utilisation std::string et rendre votre vie plus facile.
  • vous comparez un élément à la fois, vous n'avez pas besoin de comparer des chaînes de caractères. comparer char au lieu de cela, '<' == str[i]
  • Je voudrais utiliser la classe string, mais je suis de la lecture d'un fichier xml qui pourrait potentiellement avoir pas d'espace (c'est à dire <blablabla>asdfsaf</blah><bizarre>asdfsaf</bizarre> Alors j'ai pensé que le meilleur moyen serait de faire caractère par caractère. De toute façon le ""< " = = str[i]" a fini par travailler (bien que j'ai juré que j'ai déjà essayé). Merci.
InformationsquelleAutor Isawpalmetto | 2010-02-07