String zusammensetzen

Hallo zusammen,

Bin neu hier und möchte erst einmal ein Hallo in die Runde werfen.

Hatte bisher nicht viel mit der Programmiererei zu tun. Bin über die Crestron Programmierung ans coden gekommen.

Dort nennt man das Simpel+ und ist auch sehr C nahe.

Warum funktioniert bei Arduino folgende Zeile nicht:

targetString = "String1" + "String2";

Jedoch die folgenden Zeilen:

StringA="String1"; StringB="String2"; targetString = StringA + StringB;

Das möchte sich mir nicht ganz erschließen.

Gruß Harry

Das geht nicht weil Strings in C nichts anderes als Null-terminierte char Arrays sind. Und die kann man nicht mit + verknüpfen. Deshalb kommt dann wie zu erwarten dieser Fehler

error: invalid operands of types 'const char [2]' and 'const char [2]' to binary 'operator+'

Wenn du die Arduino String Klasse verwendest (welche eine Wrapper Klasse für dynamisch angelegte Arrays ist), dann musst du aus einem der String Literale erst mal ein String Objekt machen.

In vielen Fällen braucht man das aber gar nicht. Ausgaben auf Serial, SD oder Ethernet kann man auch mit wiederholten Aufrufen von print() erledigen,

Okay, vielen Dank für das aufzeigen des Ursprungs.

Bei mir geht es meistens um das steuern via Socket. Meisten muss ich relativ lange String mit variablen und statischen Abschnitten senden.

Dann muss ich mir die statischen Teile vorher also immer als Variable definieren und den zu sendenden String zusammensetzen.

Danke für die Antwort

Solange die Ausgabe über print()/println() erfolgt, kann man es stückeln. Das gilt vor allem für Serial, SD und Ethnernet.
Einen einzelnen String braucht man nur bei bestimmten Libraries, die alles in einem Array wollen. Das gibt es, ist aber eher selten.

Das Thema wurde vor kurzem erst hier behandelt:

Da muss man den statischen Teil auch nicht als Variable speichern. Geht einfach als Literal direkt im print() Aufruf:

x.print(F("....");
x.print(var1);
x.print(F("....");
x.print(var2);

Bei print()/println() kannst auch das nehmen:
http://arduiniana.org/libraries/streaming/
Dann wird obiger Code zu:

x << F("....") << var1 << F("....") << var2;

Wenn du den gleichen Text mit unterschiedlichen Variablen hast macht man eine Funktion draus

Vielen Dank für die ausführliche Antwort.

Gruß Harry