Beim Lesen / Ausprobieren einer aktuellen Antwort war ich überrascht zu sehen, dass die StringKlasse von Arduino die c_str()Methode unterstützt , genau wie die C ++ - std::stringKlasse. Wie erwartet scheint es einen Zeiger auf den Inhalt der Zeichenfolge als nullterminiertes charArray (dh Zeichenfolge im C-Stil) zu erhalten.
Soweit ich sehen kann, wird diese Methode jedoch in der offiziellen Arduino-Dokumentation nicht erwähnt. Außerdem Stringscheint in allen Beispielcodes, die ich verwendet habe , ein anderer Ansatz verwendet zu werden. Ein sekundärer charPuffer wird eingerichtet, und dann wird der Inhalt der Zeichenfolge mit kopiert String::toCharArray(). Dies erfordert offensichtlich den doppelten Speicher sowie eine O (n) -Kopieroperation.
Es scheint, c_str()sollte der bevorzugte Ansatz sein. Gibt es einen Grund, warum toCharArray()es häufiger verwendet wird?