Zitat Zitat von Sisor Beitrag anzeigen
'string' ist in Arduino nicht definiert! Folgendes produziert den Fehler 'error: 'string' was not declared in this scope':
Code:
void setup() {
    string s = "Kompiliert nicht!";
}
void loop() {}
Folgender Code zeigt die 'Kompatibilität' von String und C-Funktionen, die mit char* arbeiten:
Code:
void setup() {
    String s1 = "Hallo Welt!";
    
    Serial.begin(9600);
    Serial.println(s1);
    
    String s2 = "Ha";
    s2 += "We";
    strncpy(s1.c_str()+s1.indexOf('W'), s2.c_str(), s2.length() );
    Serial.println(s1);
}

void loop() {}
[Ausgabe: Hallo Welt! Hallo HaWe!]

PS: Sorry fredyxx fürs Thread-Hijacken.
das güldet nicht!
du verwendest eine (non-Standard-C) Arduino-String-Class-eigene interne Umwandlungsmethode String::c_str(), um erst Strings in char* umzuformen, und erst dann wendest du cstring- (string.h) Funktionen darauf an!

Wirklich kompatibel zu ANSI-C char* wäre es nur, wenn du Strings an sich mit cstring-Funktionen verwenden könntest, also z.B.

String str1= "To be or not to be";
String str2;
String str3;

/* copy to sized buffer (overflow safe): */
strncpy ( str2, str1, sizeof(str2) );

/* partial copy (only 5 chars): */
strncpy ( str3, str2, 5 );
str3[5] = '\0'; /* null character manually added */

puts (str1);
puts (str2);
puts (str3);


Output WÄRE (!):

To be or not to be
To be or not to be
To be

(aus cplusplus.com, verändert)


Viel SINNVOLLER wäre es allerdings gewesen, C++ string als Grundlage zu nehmen,
alle string-class-Methoden auf String zu vererben,
und sie dann durch die Arduino-eigenen String-Methoden zu erweitern.

DAS wäre C++ kompatibel (da man alle C++ string Methoden weiterhin auch in String zur Verfügung HÄTTE) und durch zusätzliche Methoden Arduino-Anfänger-geeignet.