Supprimer des mots dans une phrases ...

Messages postés
50
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
8 août 2009
- - Dernière réponse : leprov
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
- 29 sept. 2004 à 20:16
Salut,

J'aimerais arriver a faire en sorte que lorsque mon bot recoie une commande, il enléve certain mot ex:

!cmd nickserv identify password

hé bien là je voudrais que "!cmd " disparaisse quand il va envoyer la commande au serveur.

Je n'ai absolument aucune idée de comment faire ...

Un Tutorial ?

Un bout de code ?

Un exemple ?

Ce que vous voulez si sa peut m'aider.
Afficher la suite 

7 réponses

Messages postés
402
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2005
1
0
Merci
Salut,
si tu utilise les std::string, rien de plus simple que erase( ), voici les trois prototypes:
basic_string& erase(
   size_type _Pos = 0,
   size_type _Count = npos
);

iterator erase(
   iterator _First, 
   iterator _Last
);

iterator erase(
   iterator _It
);


Admettons que tu choisisse la première alternative, qui est assez simple :) il te suffit de donner la possition de départ, de laquelle l'effacement doit partir... ensuite tu donne le nombre de caractères à effacer ... donc pour effacer "!cmd " se trouvant au début du string, tu fais:
// si "!cmd " est trouvé dans LeString :)
if( LeString.find( "!cmd " ) != string::npos )
    LeString.erase( 0, 5 );


Si tu utilises les char *

Tu peux programmer vite fait une fonction qui te permet d'effacer un nombre définit de caractère, par exemple tu définit:
char *MyErase( char *in_pszLeString, int in_iDepart, int in_iLongueur );


Et tu implémentes cette fonction :)

pas trop compliqué, tu parcours ta chaîne et tu vérifie si par hasard tu ne tombe pas sur le\les caractères à effacer ... si c'est le cas tu les effaces, etc . :)

ciao ;)

:.: [DmXx] [[irc://irc.quakenet.org/ex-concept #eX-Concept @ QNet]] :.:
Commenter la réponse de D1m3x
Messages postés
50
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
8 août 2009
0
Merci
Merci bcp !
Commenter la réponse de cs_oshin
Messages postés
50
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
8 août 2009
0
Merci
C'est du c++ mon bot, je crois que ce que tu m'as donné ne marche pas ...

Faut déclarer des includes ?

ou autres ?
Commenter la réponse de cs_oshin
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
1
0
Merci
Ca existe tjrs en C++ les pointeurs nan ?
Dans l'affirmative, il est bien plus simple de les utiliser :

char buf[500]; //contiendra !cmd ...etc
char *b = buf;

b += 5; //strlen("!cmd ");

b pointera donc vers "nickserv...etc" et apres tu travaille dessus comme tu veux.
En tt ka, ca a l'air vachement plus simple ke ce ka donné la personne au pseudo tres compliké a ecrire.

++
Commenter la réponse de cs_AlexMAN
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
beaucoup plus simple, si tu utilise les strings:
a priori ta commande est toujours le premier mot.donc tu fait
string::size_t pos = Str.find_first_of (' ');

(faut vérifier le profil de find_first_of(), mais ca te donne la premiere position du caractère donné en paramètre trouvé dans ta chaine)

et ensuite un erase de la pos 0 a la pos trouvée.
comme ca tu passe ca en fonction EraseCmd(string Str)
et tu as une fonction qui va marcher pour ttes tes commandes quelle que soit leur taille.

pour les include c'est string.h (mais selon le compilateur....paske t'as aussi le string.h du C et selon si ton compilo est a la norme ou pas l'include est pas pareil)

tu fais (algo un peu batard)

analyse de la commande passée;
stocker la commande ds une string intermediaire;
effacer commande de ta string de depart;
traiter commande;
Commenter la réponse de leprov
Messages postés
402
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2005
1
0
Merci
Euh l'include c'est <string>

le standard C++ n'inclus pas string.h, c'est du C! :)

et puis pour AlexMAN, mon pseudo est pas dur :P D1m3x (enfin c mon tout vieux pseudo ça, peut être que le nouveau te plaîra mieux: [DmXx] ) MDR :p

cya ;)

:.: [DmXx] [[irc://irc.quakenet.org/ex-concept #eX-Concept @ QNet]] :.:
Commenter la réponse de D1m3x
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
je sais ke le standard inclut pas string.h et ke cest du c. le standard c++ tinclus <fichier> et si cest un h du c tinclus <cfichier>, mais avec VC6, cest zarb.....dc je sais pas si ya dautres compilos ou cest comme ca
Commenter la réponse de leprov