Salut !
Je reçois un string "1515.1212"
Je voudrais pourvoir en faire 2 entier 1515 et 1212 pour m'en servir séparément.
Des idées ou solutions (avec explication de préférence) ?
Merci a vous !
Salut !
Je reçois un string "1515.1212"
Je voudrais pourvoir en faire 2 entier 1515 et 1212 pour m'en servir séparément.
Des idées ou solutions (avec explication de préférence) ?
Merci a vous !
c'est dans une cString ou une String ?
Je connais pas le cString.
Je l'ai définit en "String" donc je pense que c'est un simple.
neoh35:
Je connais pas le cString.
Je l'ai définit en "String" donc je pense que c'est un simple.
OK on n'aime pas trop les Strings mais bon
pour le premier chiffre il suffit de demander à la classe String de lire un entier avec toInt()
, il va s'arrêter au point.
Pour le second, il faut d'abord trouver le point (indexOf()) et demander à la classe String de lire un entier à partir du caractère suivant (extraire la sous chaine)
une cString c'est un tableau de char qui se termine par un caractère nul.
Quitte à dépenser bêtement de la mémoire avec la classe String, faites un sscanf() sur la c_str() associée à votre String..
void setup() {
Serial.begin(115200);
String message = "1515.1212";
int a, b;
if (sscanf(message.c_str(), "%d.%d", &a, &b) == 2) { // si on a bien trouvé deux entiers
Serial.print(F("a vaut ")); Serial.println(a);
Serial.print(F("b vaut ")); Serial.println(b);
} else { // sinon erreur de format
Serial.println(F("Erreur message"));
}
}
void loop() {}
Je sais que les strings ont beaucoup de défauts mais j'avais pas trop le choix.
Merci beaucoup pour votre réponse !
neoh35:
Je sais que les strings ont beaucoup de défauts mais j'avais pas trop le choix.
???
C'est la plus mauvaise excuse que j'ai entendue...
j'ai modifié un peu le code ci dessus au fait pour rajouter un test qui vérifie que sscanf() a lu deux entiers.
Attention un entier sur un petit arduino ça va de -32768 à 32767. si vous avez d'autres types de nombre, faudra prévoir de passer sur un long et changer le format "%d" dans sscanf(). Je vous laisse trouver la doc sur l'écriture du format