Hallo Zusammen,
ich suche nach einer Möglichkeit komplexe Zeichenketten wie z.B. einen kompletten HTML Code in einer Variablen abzuspeichern. Dabei möchte ich die Zeichenkette nach Möglichkeit NICHT editieren, sondern lediglich per Copy und Paste in meiner Variable einsetzen.
Das Problem dabei sind verschiedene enthaltene Zeichen wie z.B. die Anführungszeichen ("). Diese lassen sich zwar in einem String einfügen, soweit ein Backslash vorangestellt wird, welches aber eine STARKE Modifikation der Zeichenkette erfordert. Bei einem längeren HTML Code kaum zumutbar. Zwar kann man hier auch hin und wieder das einfache Anführungszeichen (’) verwenden, grundsätzlich komme ich aber hiermit nicht weiter.
Ebenfalls muss nach, bzw. vor jedem Umbruch ein weiterer Backslash eingefügt werden, damit die Zeichenkette formatiert bleiben kann (vgl. HTML mit mehreren Umbrüchen zur Strukturierung des Codes).
Ist es nun möglich eine komplexe Zeichenkette in irgendeiner Form UNVERÄNDERT in die Arduino IDE einzufügen und als Variable (String) zu verarbeiten?
Am liebsten wäre mir eine .h Datei in welcher ich die Zeichenkette einfügen kann und auf diese referenziere.
Das ist für String Literale. Da dynamisch Strings zusammenzustrückeln geht natürlich nicht. Dafür bräuchtest du zwei Strings. Einen vor und einem nach der Einfügestelle
Und wie so oft: die String Klasse ist hier i.d.R. überflüssig
Ich hoffe du hast noch viel RAM für solche Spielereien frei
EDIT:
wobei replace() gar nicht sooo ineffizient ist wie es den Anschein hat. Da wird mit rellaoc() und memmove() gearbeitet. Also einfach der Speicher erweitert und verschoben. Aber du hast trotzdem einen nicht unerheblichen Overhead und der Speicher ist bei den Ethernet Sachen auf dem UNO meistens etwas knapp.
Das größte Problem ist aber einfach dass man den Text nicht per PROGMEM im Flash lassen kann, so dass gar kein RAM belegt wird.
Habe 4MB zur Verfügung Nutze einen ESP8266 12 und brauche den String auch nicht im Flash abspeichern. Baue mir den String zur Laufzeit im Setup zusammen
Wenn aber die Zeichenfolge )" nicht das Ende sein soll, weil es im Text selbst vorkommt, kannst du Anfang und Ende durch andere Zeichen zwischen " und ( eindeutig machen.
R"!(z.B. "hallo (geht so auch)" )!";
"z.B. \"hallo (geht so auch)\" ";
(so machen es Leute, die auch mit älteren Compilern zufrieden sind)