Zwei Zeichenketten aneinander hängen (Operatorüberladung )
-
Hi,
also ich habe folgendes Problem und zwar will ich den Operator + überladen so das immer wenn ich in der Main z.B
c=a+b;schreibe das dann a und b aneinander gehängt werden, das geht auch so weit aber ich will ,das a auch noch den selben Inhalt hat als vorher also
z.b
in a steht "Hallo"
in b steht "Wie gehts?"und nur in c soll stehen: "Hallo wie gehts?" in a und b weiterhin das selbe
bis jetzt habe ich es so:
String& String::operator+ (const String& s) { strcat(string, s.string); return *this; }da steht das dann immer in a "Hallo wie gehts?".
ich komme einfach nicht drauf wie das anderst gehtIch hoffe ihr versteht was ich meine
mfg
-
kein schrieb:
...
in a steht "Hallo"
in b steht "Wie gehts?"und nur in c soll stehen: "Hallo wie gehts?" ...
Das wird sooo (einfach) nicht gehen ... jedenfalls nicht, wenn das 'w' klein sein soll.

Ansonsten ist's aber extrem easy:
string a = "Hallo"; string b = " wie geht's ?"; string c = a + b; cout << c;Ergo: Gibt's schon und funktioniert prima und ganz ohne unsichere Funktionen wie strcat()....
Gruß,
Simon2.
-
Z. Bsp. so
String String::operator+ (const String& s) { String temp(*this); strcat(temp.string, s.string); return temp; }
-
Vielen Dank für die Antworten funktioniert super
@simon2 ich muss operatorüberladung machen daher selber die klasse string machen
-
aber noch ne frage dazu geht das auch irgendwie mit einem Array also anstatt
String temp(*this);
z.B char temp[100]...
-
Es wäre evtl. besser den operator+ außerhalb der Klasse zu implementieren. Noch besser ist es dies über einen, in der Klasse implementierten, operator+= zu machen.
-
kein schrieb:
...ich muss operatorüberladung machen daher selber die klasse string machen
Sorry, was soll dieser Satz ausdrücken ?

Gruß,
Simon2.
-
ok Danke
@simon2
also ich soll es nicht einfach mit Strings machen sondern ich soll 2 Char Arrays aneinander ketten wenn ich in der Main Array1+Array2 eingebe normalerweise gibt es ja ein Fehler. Daher muss ich den Operator+ überladen.
z.B
String String::operator+ (const String& s)
{
.....
}und nicht einfach zwei Srings verketten
-
Simon2 schrieb:
kein schrieb:
...ich muss operatorüberladung machen daher selber die klasse string machen
Sorry, was soll dieser Satz ausdrücken ?

Vermutlich daß es um Hausaufgaben geht - eine eigene Stringklasse ohne STL-Hilfe zu schreiben.
@kein: strcat() entspricht eher einem op+=. Wenn du den Urspungsstring nicht angreifen willst, mußt du seine Daten erst umkopieren.
-
schau dir evtl. auch mal den post von CStoll in diesem Thread an: http://www.c-plusplus.net/forum/viewtopic-var-t-is-198494.html Da gehts zwar um int, aber wie CStoll sagt kann man op+= gut mir strcat machen und dann wie dort beschrieben op+ einfach durch += ausdruecken.
-
kein schrieb:
...
@simon2
also ich soll es nicht einfach mit Strings machen sondern ich soll 2 Char Arrays aneinander ketten wenn ich in der Main Array1+Array2 eingebe normalerweise gibt es ja ein Fehler. ...Sorry, aber ohne Satzzeichen verstehe ich sowas nicht.
Gruß,
Simon2.
-
Vielen Dank für eure Antworten ich habe es jetzt mit dem += Operator gemacht
mfg