Strin verketten



  • hallo,
    ich versuche zwei strins zu verketten

    contst 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.



  • 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.
    bnz

    Nein, 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 mit std::string möglich wäre. Dass ein std::string gegenüber einem char -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:

    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. 🙂


Anmelden zum Antworten