Supprimer des mots dans une phrases ...

cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009 - 28 sept. 2004 à 16:30
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.

7 réponses

D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
28 sept. 2004 à 17:16
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]] :.:
0
cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009
28 sept. 2004 à 18:03
Merci bcp !
0
cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009
28 sept. 2004 à 18:27
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 ?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
28 sept. 2004 à 19:43
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.

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
29 sept. 2004 à 10:31
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;
0
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
29 sept. 2004 à 13:27
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]] :.:
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
29 sept. 2004 à 20:16
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
0
Rejoignez-nous