Séparer une chaîne de caractères en plusieurs parties...

Signaler
Messages postés
7
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
24 juillet 2008
-
Messages postés
7
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
24 juillet 2008
-
Bonjour !

Je suis en train
de bosser sur un programme open source d'un jeu qui utilise eAthena
comme serveur (serveur privé Ragnarok pour ceux qui connaissent).
Le
truc c'est que j'aimerais implémenter un système de discussion
privées... Pour ce faire, je dois envoyer le packet suivant au serveur :
S 0096 <len>.w <nick>.24B <message>.?B
La ligne de caractère a envoyer est celle-là : "pseudo salut comment sa va ?"

Seulement,
il faut séparer "pseudo" du reste du message "salut comment sa va ?"
pour ensuite les répartir parmis ces lignes de code :

outMsg.writeInt16(0x0096);
outMsg.writeInt16(msg.length() + 4); // Correspond a <len>.w
outMsg.writeString("pseudo", 24); // Ici je dois mettre le pseudo pour que la commande le retranscrive comme suit : pseudo.24B
outMsg.writeString("salut
comment sa va ?", msg.length() - [longueur du pseudo]); // Donc on
envoi le message séparé du pseudo pour que la commande le retranscrive
comme suit : salut comment sa va ?.?B

Donc voilà, je cherche un moyen pour séparer le pseudo du message dans la variable msg...

Merci d'avance pour votre aide ^^ !

4 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Salut,
Recherche le premier espace que tu trouves et tu as le pseudo. (strchr)
ou utilises strtok() pour faire un split avec n'importe quel séparateur.
Ou alors je n'ai pas compris ta demande, mais ça a l'ait plutot simple.
Messages postés
7
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
24 juillet 2008

Oui c'est bien sa que je cherche... Mais je ne sais pas comment l'utiliser. En fait msg est une variable de type string et apparament strtok demande une variable de type char...
Et comment dois-je utiliser cette fonction ?
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Une std::string peut etre vu comme un char* avec la méthode c_str()

char psz[256];
string msg("Salut, blalba...");
strcpy(psz, msg.c_str());

// reconstruction
string s(psz);

Sinon y'a la méthode fin() ou find_first_of() sur string.
Messages postés
7
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
24 juillet 2008

Merci pour l'astuce ! Je vais tester sa et je te tiens au courrant ;) !