Go Down

Topic: Cast d'un String vers integer (Read 7606 times) previous topic - next topic

Christophe37

Bonsoir,
tout est dans le titre, je cherche le moyen de faire un cast sur un String pour le mettre en integer. ce qu'il y aura dans le string sera un chiffre bien sur.

Merci

PS: un String pas un Char*

Jean-François

#1
Jan 11, 2011, 10:05 pm Last Edit: Jan 11, 2011, 10:07 pm by jfs Reason: 1
Code: [Select]

int Var = int(laStringQueJeVeuxPasserEnInt);


http://arduino.cc/en/Reference/IntCast
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Franxoois

Je n'ai pas testé mais ça m'étonnerait que ça soit aussi simple

int var = int("1234") ; // var = 1234 ?

D'habitude, je pense qu'on passe par des String.charAt(x) - '0' dans une boucle multipliant par 10 à chaque fois.

goabonga

Code: [Select]



 String  myString = String("123");
 int myStringLength = myString.length()+1;
 
 char myChar[myStringLength];
 myString.toCharArray(myChar,myStringLength);
 
 int result = atoi(myChar);
 
 Serial.println(result*2);



atoi();  non ?

Christophe37

Merci, je vais tester sa. Cela m'énerve d'avoir oublié sa, à force de bosser en VB6 au boulot.

Jean-François

#5
Jan 12, 2011, 08:18 am Last Edit: Jan 12, 2011, 09:44 am by jfs Reason: 1
Effectivement, ma solutions marche pôô....  ;D (essai sur Arduino Duemilanova)

Par contre la soluce de Goabonga fonctionne impec.


Edit : je viens de faire un essai sous Processing et ça fonctionne :

Code: [Select]
var = int(string);
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Christophe37

Qu'est-ce que tu appel faire un essaie sous Processing ?

Jean-François

#7
Jan 12, 2011, 09:43 am Last Edit: Jan 12, 2011, 09:45 am by jfs Reason: 1
Processing est un environnement de développement avec la même IDE qu'Arduino, mais l'application est coté PC.

Il te permet de faire très rapidement des appli avec interfaces graphiques, portables sur toutes plateformes accueillant Java, sans que ce soit une usine à gaz pour compiler le tout.

http://processing.org/
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

goabonga

Par contre j'ai pas trouvé de solution directement du String au int.

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

goabonga

ouai pour Arduino , j'ai trouver que la solution en passant par toCharArray ...

faudrait rajouter une méthode ou deux dans la Class String du style toInt et toNumber ...

Christophe37

#11
Jan 12, 2011, 10:48 pm Last Edit: Jan 12, 2011, 10:49 pm by Christophe37 Reason: 1
Se serait bien effectivement mais bon d'un autre coté à force de tout simplifier on oublie les rudiments. cela fait en gros 1 an que je fait du VB.net et VB6 alors que m'a formation de base en IRIS c'est C et C++ mais on perd trop vite à pas pratiquer.

On s'y retrouve avec les langages moderne mais quand faut revenir au C ou C++ sans parler de l'assembleur que l'on a malheureusement pas vu, cela deviens vite un casse tête pour des choses que l'on est sur d'avoir pourtant déjà vu.

Comme par exemple j'essaie de manipuler des String car j'ai pris l'habitude en VB c'est simple mais du coup c'est pas forcement plus pratique en C++. Alors qu'en étude on a vu les String qu'a la fin, une fois que l'on avait vu avant les bases. Mais remanipuler des tableaux de char n'est pas si simple.

Le Pnume

Bonjour,

Vu dans la "release note" de la version 0022 d'Arduino :

Added character manipulation macros (from Wiring): isAlphaNumeric(),  isAlpha(), isAscii(), isWhitespace(), isControl(), isDigit(), isGraph(),  isLowerCase(), isPrintable(), isPunct(), isSpace(), isUpperCase(),  isHexadecimalDigit(), toAscii(), toLowerCase(), toLowerCase().

Added String.toInt() function

Serge

Go Up