Comment combiner les chaînes C ++ et les chaînes Arduino?
J'ai écrit une bibliothèque pour mon projet (pour l'instant je suis en utilisant Arduino). Le problème que j'ai, c'est que string
en C++ et en Arduino diffèrent.
Qui est, je le tiens de ma bibliothèque pour être indépendant de l'Arduino, donc je suis en utilisant #include <string>
et, plus tard, déclarant string s;
. Toutefois, dans Arduino chaînes sont définies par Arduino et a déclaré String s2
.
Quand j'inclus ma bibliothèque à l'esquisse-je obtenir error: string: No such file or directory
sur la ligne où j'essaie d'inclure C++ de la bibliothèque string (#include <string>
).
Est-il un moyen de faire Arduino utiliser C++ de la bibliothèque string, ou de convertir une chaîne de caractères à l'Arduino de chaîne lors de la compilation?
source d'informationauteur Tautvydas
Vous devez vous connecter pour publier un commentaire.
Plusieurs choses:
char *
pointant vers un tableau de caractères.std::string
de la bibliothèque. Faire un#include <string>
ne suffit pas: vous devez aussi compiler la bibliothèque string pour la AVR plate-forme.new
etdelete
ne sont pas mises en œuvre. En outre, d'autres choses peuvent être nécessaires lestd::string
mise en œuvre, de sorte que de nombreuses dépendances à gérer, ou un code source taille trop grande pour Arduino.Il y a quelques implémentations de classiques de la chaîne d'outils pour microcontrôleur AVR comme Arduino, mais ils sont en fait une voie procédurale (et pas dans une méthode orientée objet) pour le style C à cordes. Par exemple, pour l'avr-libc venir avec avr-gcc, vous pouvez voir la liste des fonctions ici:
l'avr-libc chaîne.h
Vous avez même le bon vieux
printf
: l'avr-libc stdio.hIl est possible de les utiliser avec Arduino, si vous ajoutez les bons fichiers d'en-tête dans votre code, mais attention à la taille de votre code! Juste à l'aide de
printf
pouvez augmenter la taille de plusieurs kilo-octets, qui peut être énorme pour un microcontrôleur selon vos besoins.Pour conclure, à mon avis, le seul portable moyen serait d'utiliser un
char *
chaîne, http://arduino.cc/en/Reference/String