[résolu] Probleme pour connaitre la taille d'une chaine de caracteres

Probleme pour connaitre la taille d'une chaine de caracteres [résolu] - C++ - Programmation

Marsh Posté le 26-04-2007 à 17:44:24    

Bonjour a tous !
 
j'ai un probleme lorsque je veux connaitre la taille d'une chaine de caracteres, pour cela e fais :
 

Code :
  1. bool Jeu::jouerCommande(string commande){
  2. int taille;
  3. taille = commande.length();
  4. if ( taille == 2 ){
  5.  if(  ( commande[0] >= 0 && commande[0] <= 9 )  && ( ( commande[1] >= 'A' && commande[1] <= 'Z' ) ) ){
  6.   unsigned int conv = commande[1] - 'A';
  7.   if ( plateau_.verifierPosition(conv, commande[0]) ){
  8.    plateau_.chercher(conv, commande[0]);
  9.    return true;
  10.   }
  11.  }
  12.  if( ( ( commande[1] >= 0 && commande[1] <= 9 )  &&  ( commande[0] >= 'A' && commande[0] <= 'Z' ) ) ){
  13.   unsigned int conv = commande[0] - 'A';
  14.   if ( plateau_.verifierPosition(conv, commande[1]) ){
  15.    plateau_.chercher(conv, commande[1]);
  16.    return true;
  17.   }
  18.  }
  19. }
  20. if ( commande.length() == 3 ){
  21.  if(    (( commande[0] >= 'A' && commande[0] <= 'Z' ) &&(( commande[1] >= 0 && commande[1] <= 9 )&&( commande[2] >= 0 && commande[2] <= 9 )))){
  22.   unsigned int conv = commande[0] - 'A';
  23.   unsigned int a = commande[1] * 10 + commande[2];
  24.   if ( plateau_.verifierPosition(conv,a) ){
  25.    plateau_.chercher(conv,a);
  26.    return true;
  27.   }
  28.  }
  29.  if (       (( commande[3] >= 'A' && commande[3] <= 'Z' ) &&(( commande[0] >= 0 && commande[0] <= 9 )&&( commande[1] >= 0 && commande[1] <= 9 )))     ){
  30.    unsigned int conv = commande[3] - 'A';
  31.    unsigned int a = commande[0] * 10 + commande[1];
  32.    if ( plateau_.verifierPosition(conv,a) ){
  33.     plateau_.chercher(conv,a);
  34.    return true;
  35.    }
  36.  }
  37. }
  38. return false;
  39. }


 
et le probleme c'est que quelle que soit la position a verifier (stockée dans ma classe), ca me renvoit toujours que celle ci n'est pas valide (comme si j'avais taper une position impossible).
Et lorsque je debuggue, le debuggueur stoppe sur la ligne:
 

Code :
  1. taille = commande.length();


 
puis j'ai une fenetre "Editeur de fichier C++" qui s'ouvre me disant que le fichier iostream est introuvable a l'emplacement indiqué alors que pour afficher le reste, tout a bien fonctionné. Et ce probleme arrive sur différents ordinateurs.
 
Et j'ai essayer aussi de mettre taille à 2 puis de tester le reste avec ca, mais des qu'il faut faire une "operation" sur un string comme commande[0], je retrouve le meme probleme.
 
J'utilise de logiciel Eclipse et je debute, soyez indulgents s'il vous plait :)
 
Merci beaucoup


Message édité par Zoltan87 le 30-04-2007 à 10:49:50
Reply

Marsh Posté le 26-04-2007 à 17:44:24   

Reply

Marsh Posté le 26-04-2007 à 17:54:02    

- utilise la méthode compare pour analyser ce que contient ta string. Tout ces 'if' n'ont pas leur place ici.
- vérifie ce que contient "commande" au debugger à la premiere ligne de ce bloc.


---------------
Töp of the plöp
Reply

Marsh Posté le 26-04-2007 à 18:01:17    

je ne connais pas la methode compare :s
le debuggueur me dis que commande contient la valeur 0x22ec90 :s
 
mais il est aussi ecrit *_M_p = 'A' je ne comprend pas ce que c'est
 
(pour info j'avais taper A0 (c'est le chiffre zero en deuxieme)

Message cité 1 fois
Message édité par Zoltan87 le 26-04-2007 à 18:03:18
Reply

Marsh Posté le 27-04-2007 à 09:18:05    

Zoltan87 a écrit :

je ne connais pas la methode compare :s


Ben lis la doc avant de coder. C'est dans la doc de la stl std::string.


---------------
Töp of the plöp
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed