char + char?

athlon

Mitglied
Wieso funktioniert das nicht?

Code:
char a[4] = "a";
char b[4] = "b";
char c[4] = "c";

char abc[4] = a+ b+ c;

Mit CString geht das (a+b+c) wieso nicht mit char?

Kann mir jemand sagen obs da ne andere möglichkeit gibt oder welchen header ich für CString includen muss?
mit cstring.h geht es nicht
 
Na weil CString ein Klasse ist, die Funktionalitäten für das Aneinanderfügen von char[ ] bereitstellt. Ein Variable vom Typ char[ ] oder besser char* ist nix weiter als eine Adresse, eine 32bit-Zahl. Der Plusoperator macht da im besten Fall (wenn es überhaupt kompiliert wird) eine Addition der Adressen. CString (und die meisten string-Datentypen in anderen Sprachen) ordnen dem +-Operator eine etwas "praktischere" Aufgabe zu und lassen ihn die Strings aneinander kopieren. Das ganze kannst du mit strcat auch erreichen. Eine Alternative (die bessere sogar) zu CString ist std::string. Das Ding hat den +-Operator auch entsprechend überladen.
 
a ist das gleiche wie &a[0], also die adresse des char Arrays a.
dito für b und c;

wenn du jetzt a + b + c machst addierst du die Adressen

char abc[4] dagegen ist ein Array und dem kann man keine adresse ohne cast zuweisen

mit CString funktioniert das, weil die Klasse Operatoren für die Addtion definiert die einen CString zurückliefern.
Bei C-Strings musst du mit strcat, strcpy, sprintf etc arbeiten
 
Zurück