récupérer un string

a marqué ce sujet comme résolu.
Auteur du sujet

bonjour à tous

Je voudrais diviser par 10 chaque valeur retourné de ce string sous arduino mais je n’arrive pas à les récupérer dans un tableau

pourriez-vous m’aider

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
  String  stringOne  = "0 0.319131750, 1 0.319536470, 0 0.320013340, 1 0.320422550, 0 0.320806540, 1 0.321220170, 0 0.321632110,   ";

  String stringTwo = stringOne;

  stringTwo.replace("0 0.", "");

  stringTwo.replace("1 0.", "");

  Serial.println("string original: " + stringOne);

  Serial.println("string modifie: " + stringTwo);


  }

`

Édité par tricotin

+0 -0

Diviser quoi par 10 ? Parce que le résultt c’est censé etre quoi ?

Enfin, perso je ne comprends pas ce que tu cherches à faire.

Sinon, pour colorer ton code, tu as les balises code:

```c
ton code
```

=

1
void loop()
+0 -0

Communication

Coucou \o,

Tu dois avoir un problème lorsque tu utilises les balises de code.

Voila comment on les utilises :

1
2
3
```c

```

Sachant que le caractère ` s’obtient en faisant chez moi Alt Gr + 7.

Donc 3 fois Alt Gr + 7, ensuite, on mets le nom du langage (ici C ou C++, le langage Arduino ayant une syntaxe mélangée des deux). Puis on referme avec 3 fois Alt Gr + 7.


Sinon, c’est un problème de programmation et pas de matériel. Du coup, je l’ai déplacé dans la bonne section.


Pour ton problème, je te conseil de passer par un chaine de caractère C-like. C’est à dire : stringTwo.c_str(). Ensuite, tu peux utiliser la fonction C strtok combinée avec la fonction atoi.

Ça donne quelquechose du genre :

1
2
3
4
5
char *token = std::strtok(stringTwo.c_str(), " ");
while (token != NULL) {
   Serial.println(atoi(token)/10.0);
   token = strtok(NULL, " ");
}

Edit: Largement grillé par AmarOk ^^"

Édité par ache

ache.one                 🦹         👾                                🦊

+0 -0
Auteur du sujet

en fait je récupère chaque valeur séparé d’une virgule et je voudrais diviser par 10 chaque valeur exemple premiere valeur récupéré
319131750 à divisé par 10 et ainsi de suite pour les autres valeurs

+0 -0
Auteur du sujet

j’ai essayé ça

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
char *token = std::strtok(stringTwo.c_str(), " ");

while (token != NULL) {

   Serial.println(atoi(token)/10.0);

   token = strtok(NULL, " ");

}

`

mais j’ai le message

strtok is not a member of std

+0 -0

Essaye sans le std devant certainement.

ache.one                 🦹         👾                                🦊

+0 -0
Auteur du sujet

bonjour Je voudrais divisé par 10 cet trois valeur "12345, 6789, 101112"

Mais je n’arrive qu’a en divisé qu’une

si vous avez une idée

merci d’avance

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
String s = "12345, 6789, 101112"; 

  int n;

  double nb;

  String subs, newStr="";



  n = s.indexOf(",");

  subs = s.substring(0, n);

  subs.trim(); 



  nb = subs.toFloat();

  nb = nb / 10;



  newStr.concat(String(nb));

  newStr.concat(","); 



/code]

Édité par tricotin

+0 -0

Question bête mais si le code te convient comme ça. Pourquoi ne fait tu pas une boucle pour répéter ce que tu fais sur les autres éléments ?

ache.one                 🦹         👾                                🦊

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte