Découper chaine (débutant) [Résolu]

Signaler
Messages postés
368
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
14 mai 2010
-
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
Bonjour,



Etant gros débutant en C++ je me suis lancé dans la programmation d'un morpion.



Ainsi je demande aux utilisateur d'entrer les coordonnées du pion de cette facon , exemple: 2-3.



J'aimerais savoir s'il existait un truc pour mettre par exemple 2 dans la variable X et 3 dans la variable Y ?



Merci

9 réponses

Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
bonjour,

pour ta fonction, moi, je ferai :

2-3 = chaine

char str[] = "2-3";
char * pch;
char * pch2;
pch = strchr(str,'2');
pch2 = strchr(str, '3');

mais va lire ca, tu verra, tu comprendra mieux tout ce qui est manipulation de caracteres avec la librairie standard

http://www.cplusplus.com/ref/cstring/index.html


event.Voila();
@+;
ROOT_DIEU Alias satellite34
Messages postés
368
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
14 mai 2010
1
Merci !

Mais j'ai trouvé une fonction qui faisait ça :



La fonction :



vector<string> stringSplit (string text, string separators)

{

int n = text.length();

int start, stop;


vector<string> words;



start = text.find_first_not_of(separators);

while ((start >= 0) && (start < n)) {

stop = text.find_first_of(separators, start);



if ((stop < 0) || (stop > n)) stop = n;



words.push_back(text.substr(start, stop - start));

start = text.find_first_not_of(separators, stop+1);

}



return words;

}





Lancement de la fonction :




vector<string> temp = strinSplit(monResultat, "-"); x=atoi(temp[0]);y=aoti(temp[1]);





Merci à nojhan pour cette fonction
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
ben si t'es content avec cette usine à gaz qui va mettre 8 Ko de STL dans ton exe alors qu'on le fait en 6 lignes de code avec 1 pointeur, tant mieux mais c'est tout de même pas le top.

ciao...
BruNews, MVP VC++
Messages postés
368
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
14 mai 2010
1
Il ne faut pas se vexer, je trouve que les 2 solutions ont leurs inconvenients et leurs avantages.



Et perso, dans ce cas précis c'est vrai que la solution de satellite
est plus legere et moins compliqué et c'est pour cela que je vais
l'utiliser.



Merci pour votre aide.
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
erf, a mon avis , on n' utilise pas les vectors pour découper un string!!!!!
Ma solution n'est pas la meilleure pour toi mais va sur le lien précédemment posé et tu trouvera ton bonheur avec de la performance.

event.Voila();@+;ROOT_DIEU Alias satellite34
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
char entree[24];
char *c;int x 0, y 0;

Disons que tu as récupéré dans 'entree':
x = atoi(entree);
c = entree;
while(*c) {
if(*c == '-') {
y = atoi(c + 1);
break; // on quitte la boucle while
}
c++;
}

ciao...
BruNews, MVP VC++
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Voila, lol, brunews est moins flemard que moi

mdr

event.Merci();@+;ROOT_DIEU Alias satellite34
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
y a juste que j'aurais aimé que MATHIS49 essaie de le faire.

ciao...
BruNews, MVP VC++
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Oui c'est sur, mais dans l' absolu nous ne savons pas ce qu' il est en train de faire !Autant, il se casse l tete sur la stl actuellement et surement(j'espere) que ton exemple lui servira de support;
Et quel support!

event.Voila();
@+;
ROOT_DIEU Alias satellite34