Ich erhalte einen int-Wert von einem der analogen Pins auf meinem Arduino. Wie verkette ich dies zu a String
und konvertiere das dann String
zu a char[]
?
Es wurde vorgeschlagen, dass ich es versuche char msg[] = myString.getChars();
, aber ich erhalte eine Nachricht, getChars
die nicht existiert.
const char * msg = myString.c_str();
. Im Gegensatz zutoCharArray()
,c_str()
ist eine Null-Kopier - Funktion, und Null-Kopie ist eine gute Sache auf Speicher-constrained Geräte.Antworten:
Verwenden Sie zum Konvertieren und Anhängen einer Ganzzahl den Operator + = (oder die Elementfunktion
concat
):char[]
Verwenden Sie toCharArray (), um die Zeichenfolge als Typ abzurufen :Im Beispiel ist nur Platz für 49 Zeichen (vorausgesetzt, es wird mit null abgeschlossen). Möglicherweise möchten Sie die Größe dynamisch gestalten.
Overhead
Die Kosten für das Einbringen
String
(es ist nicht enthalten, wenn es nicht irgendwo in der Skizze verwendet wird) betragen ungefähr 1212 Byte Programmspeicher (Flash) und 48 Byte RAM.Dies wurde unter Verwendung von Arduino IDE Version 1.8.10 (2019-09-13) für eine Arduino Leonardo- Skizze gemessen .
quelle
char charBuf[stringOne.length()+1]
char ssid[ssidString.length()];
ssidString.toCharArray(ssid, ssidString.length());
+1
, aber deine Lösung hat bei mir funktioniert!Als Referenz finden Sie hier ein Beispiel für die Konvertierung zwischen
String
undchar[]
mit einer dynamischen Länge.// Define String str = "This is my string"; // Length (with one extra character for the null terminator) int str_len = str.length() + 1; // Prepare the character array (the buffer) char char_array[str_len]; // Copy it over str.toCharArray(char_array, str_len);
Ja, dies ist schmerzlich stumpf für etwas so Einfaches wie eine Typkonvertierung, aber leider ist es der einfachste Weg.
quelle
Sie können es in char * konvertieren, wenn Sie keine änderbare Zeichenfolge benötigen, indem Sie Folgendes verwenden:
(char*) yourString.c_str();
Dies ist sehr nützlich, wenn Sie eine String-Variable über MQTT in Arduino veröffentlichen möchten.
quelle
Nichts davon hat funktioniert. Hier ist ein viel einfacherer Weg. Das Label str ist der Zeiger auf das, was ein Array ist ...
quelle
str
ist kein Zeiger auf ein Array, sondern einString
Objekt, das den[]
Operator implementiert .