wichtig frage strings
-
ja scorcher das war gut.
wenn ich das jetz richtig verstanden habe ist AnsiString einfach nur ne klasse die aus c-string (bzw. nullterminierter string oder ist das mit nullterminiert jetz falsch
) funktionen zusammen gebastelt wurde um das leben eines programmierers einfacher zu gestalten.
-
Man sollte noch hinzufügen, dass die C-Strings am Ende das Sonderzeichen: '\0' stehen haben, um das Ende für Funktionen zu Markieren.
d.h.:
char txt1[5]; char txt2[6]; txt1 = "Hello"; //Fehler, Array zu klein, da 5+'\0' sind 6 Zeichen txt2 = "Hello"; //OK
-
schmiddie86 schrieb:
ja scorcher das war gut.
wenn ich das jetz richtig verstanden habe ist AnsiString einfach nur ne klasse die aus c-string (bzw. nullterminierter string oder ist das mit nullterminiert jetz falsch
) funktionen zusammen gebastelt wurde um das leben eines programmierers einfacher zu gestalten.
Ich weiß nicht wie AnsiString implementiert ist aber generell müssen String-Klassen natürlich intern nicht unbeding Null-terminiert sein.
-
Man könnte sie auch so aus Jux als Verkettete Listen Implementieren.
-
AnsiString sieht dann wohl so aus:
AnsiString text1; text1 = "hallo";
und als nullterminierter string dann wohl so:
char text2[6]; text2 = "hallo";
intern sieht das char array dann so aus:
0 1 2 3 4 5 ["h"]["a"]["l"]["l"]["o"]["0"]
ich hoffe jetz habe ich es gerallt!
-
Scorcher24 schrieb:
Ein Zeiger auf ein Array mit char ist ein c-string:
char string[255];
Wobei string hier der Zeiger wäre.
Nein, string ist hier kein Zeiger.
Scorcher24 schrieb:
Beide obige Strings sind jeweils 255 chars gross
Auch hier liegt ein Missverständnis vor. In den Beispielen gibt es noch keine Strings, dies sind lediglich 2 uninitialisierte Felder von jeweils 255 Elementen vom Typ char. Und sofern diese als Strings interpretiert werden, ist deren Grösse (Länge) undefiniert.
-
schmiddie86 schrieb:
und als nullterminierter string dann wohl so:
char text2[6]; text2 = "hallo";
intern sieht das char array dann so aus:
0 1 2 3 4 5 ["h"]["a"]["l"]["l"]["o"]["0"]
ich hoffe jetz habe ich es gerallt!
Fast:
text2[5]!='0' && text2[5]=='\0'
Die "normale" '0' kann man auch inhaltlich nutzen.
-
und wenn man es dann so einsetz ist es mit dem ende von '\0' für den compiler ein abgeschlossener string aus chars´s. daher kommt dann wahrscheinlich null-terminiert wie abgeschlossen oder ende. richtig?
-
Genau!
-
ah perfekt
danke für eure hilfe leutz.
-
np