Strin verketten
-
hallo,
ich versuche zwei strins zu verkettencontst char *String1; cout << String + '-ccc' << '\n';beim debuggen bricht das Programm ab und erscheint Fehlermeldung "unbehandelte ausnahme "... in ...exe.
Hatte jemand eine Idee, wie ich "String-ccc" bekomme.
Danke
-
Stringliterale stehen in "".
const char* ist ein Zeiger auf irgendwas. Wo steht denn die Definition des Strings?
Der +-Operator ist für C-Strings nicht definiert. An dem Code ist so viel falsch, dass du die Experimente lieber lassen solltest un sorgfältig die Grundlagen in deinem Buch lernst.
-
hi Ad aCTa,
hab's geschafft... danke für nette Antwort

Grüße
-
'-ccc'Stringliterale haben eigentlich doppelte Anführungszeichen, also
"-ccc".
-
Und was soll contst sein? Und was soll String vom Typ her sein? xD
-
Und ueberhaupt benutzt man in C++ std::string.
-
knivil schrieb:
Und ueberhaupt benutzt man in C++ std::string.
Ja, kann man, muss man aber nicht. In ANSI-C gibt es dafür die Funktion strcat(). Geht genauso einfach!
-
knivil schrieb:
Und ueberhaupt benutzt man in C++ std::string.
Nö
-
Nö
Heißt das, du schlägst dich auch noch mit C-Srings herum, außer wenn du unbedingt musst?
Strings sind einfach praktischer, leichter zu handhaben und schneller.bnz
-
bnz schrieb:
Heißt das, du schlägst dich auch noch mit C-Srings herum, außer wenn du unbedingt musst?
Strings sind einfach praktischer, leichter zu handhaben und schneller.
bnzNein, aber in manchen Situationen sind char besser.
-
Kóyaánasqatsi schrieb:
Nein, aber in manchen Situationen sind char besser.
Es geht aber nicht um manche Situationen, sondern um diese: Strings verketten.
Auch kannst du gern ein Beispiel angeben, bei denen char-Arrays besser sind als std::strings in C++. Ich bezweifle es, da ich immer ganz leicht mittels c_str() zu meinem char-Array komme.
-
Lasst uns doch bitte keine neue Diskussion ANSI-C versus C++ beginnen. Es geht hier beides gleich gut. Was man da nimmt ist Geschmackssache und gehört zum persönlichen Programmierstil! Ich selbst benutze da lieber ANSI-Strings.
-
berniebutt schrieb:
Es geht hier beides gleich gut.
Eben nicht. Der Threadersteller versucht erfolglos,
operator+auf zwei C-Strings (naja, eigentlich nicht einmal das) anzuwenden, was mitstd::stringmöglich wäre. Dass einstd::stringgegenüber einemchar-Array einige Vorteile hat und in vielen Fällen die bessere Wahl darstellt, wurde in diesem Forum aber wirklich schon genügend oft gesagt, da brauchts keine weitere Diskussion.
-
berniebutt schrieb:
Lasst uns doch bitte keine neue Diskussion ANSI-C versus C++ beginnen. Es geht hier beides gleich gut. Was man da nimmt ist Geschmackssache und gehört zum persönlichen Programmierstil! Ich selbst benutze da lieber ANSI-Strings.
std::string ist viel besser als ein roher-C string.
Vor allem weil man den std::string im Bedarfsfall ja sogar wie einen rohen String nutzen kann.
-
Jaja...
Und std::string hat einen Riesen Overhead durch Templates, durch virtuelle Funktionen, ist super-langsam und mit C-String-Gefrickel ist eh alles besser.
Hatten wir jetzt alles schon in einem anderen Thread durch.
-
Ad aCTa schrieb:
Jaja...
Und std::string hat einen Riesen Overhead durch Templates, durch virtuelle Funktionen, ist super-langsam und mit C-String-Gefrickel ist eh alles besser.
Hatten wir jetzt alles schon in einem anderen Thread durch.Lasst die C++ Puristen doch allein std::string auch für einfache Dinge einsetzen! Sie bleiben ihrer Linie treu, ANSI-C sei Mist, man macht heute alles in reinem C++, selbst dann wenn es wie hier nicht notwendig ist. Ich denke aber auch, das Thema ist abgeschlossen.
-
bnz schrieb:
Nö
Heißt das, du schlägst dich auch noch mit C-Srings herum, außer wenn du unbedingt musst?
Strings sind einfach praktischer, leichter zu handhaben und schneller.bnz
Also "schneller" halte ich für eine glatte Lüge ^^
Bei eurem C++-Hype neigt ihr bisweilen dazu, maßlos zu übertreiben.Edit: fehler korrigiert
-
Schneller kannst du jetzt schön interpretieren. Schneller im Sinne von Entwicklungsdauer sind sie allemal. std::string ist STL-kompatibel, ein Pseudo-Container und somit in der Lage, durch die hochperformanten STL-Algorithmen benutzt zu werden, die gewiss schneller sind als selbst ausgedachtes C-String-Gefrickel. Palindromerkennung war da ein sehr schönes Beispiel.
