Strings überladen?!



  • Hi,
    ich hab ein Problem bei folgender Aufgabe (das momentane Projekt von mir findet ihr hier >>http://mitglied.lycos.de/darthbreaker/prak17ptp.rar<<
    Leider schaff ich es nicht die Strings richtig zu überladen,hoffe ihr könnt mir hierbei helfen,danke schon mal.

    Aufgabe:
    Erstellen Sie einen Datenypen Str mit einem privaten Datenelement char string[STR_LENGTH]
    STR_LENGTH soll eine Konstante der Klasse Str sein. Initialisieren Sie STR_LENGTH mit 500.

    Ermöglichen Sie dem Benutzer, dass er den Datentyp wie folgt verwenden kann:

    Str kette_a = "Ich moechte ein";
    Str kette_b = "Kaesebrot";
    Str kette_c;
    Str kette_d;

    kette_d = kette_a + kette_b;
    cout<<endl<<kette_d;

    kette_d = kette_a + “Wurstbrot“;
    cout<<endl<<kette_d;

    cout<<“\n\nEingabe: “;
    cin>>kette_c;
    kette_d = kette_a + kette_c;
    cout<<endl<<kette_d;

    if ( kette_d.StrIsEmpty() )
    cout<<“\n\nString ist leer“;
    else
    cout<<”\n\nString ist nicht leer”;

    MfG darki



  • (deine Aufteilung und formatierung finde ich grauenhaft, überhaupt gibts ne menge zu meckern [wenn schon mach STRLENGTH static const,...])

    strcpy(tmp.string, obj_a.string);
    strcpy(tmp.string, obj_b.string);
    

    Auch wenn ich diese lowlevel Funktionen nicht mag und mich daher nicht gut damit auskenne, fällt mir auf, dass du tmp.string zweimal a.d. selben Stelle überschreibst! So würde ich das machen (ohne Garantie):

    strcpy(tmp.string, obj_a.string);
    strcpy(tmp.string+strlen(obj_a.string), obj_b.string);
    


  • Danke, klappt wunderbar, und sry wegs der formatierung, liegt am Dev-C++, schaut meist bei andern anders aus. Was meintest du mit low-lvl Funktionen? Welche wären den besser geeignet?

    MfG darki



  • Das mit der Formatierung ist jedermanns Sache. Wenn das Forum das vermehrt hat, egal. Ich mag die Formatierung auch nicht, die einem die IDEs aufschwatzen, leg immer selber hand an. Theme lowlvl: naja, es gibt ja std::string, insofern sind die char*-Funktionen nutzlos geworden (mehr oder weniger).



  • Wie würde den der Code mit "std::string" aussehen? Sry,bin in C++ ned so das helle Köpfchen 😉

    MfG & Thx darki



  • darki schrieb:

    Wie würde den der Code mit "std::string" aussehen? Sry,bin in C++ ned so das helle Köpfchen 😉

    MfG & Thx darki

    Einfacher 🙂

    std::strings kannst du wie folgt zuweisen,

    std::string s1("Hallo "), s2("Welt!"), s3;
    s1 += s2;
    s3 = s1;
    

    da für die Klasse std::string diese Operatoren (und weitere) zu diesem Zweck extra überladen wurden.

    Zu Klasse std::string und ihren Methoden etc.: http://www.cppreference.com/cppstring.

    Die Klasse std::string sollte aber auch in jedem (vernünftigen) C++ Einsteiger-Buch behandelt werden.

    Caipi


Anmelden zum Antworten