c++ string klasse

wpb

Erfahrenes Mitglied
hy leute!

Also ich habe relativ wenig Wrfahrung mit c++...
Ich bin gerade dabei eine Klasse in c++ zu schreiben, die eine "String Klasse" repräsentieren soll...
also ich habe mir gedacht ich geh so vor, dass ich einen Initaliesierungskonstruktor verwende, dem ein Array mit beliebig vielen "Chars" übergeben kann...
Aus diesem Array soll sie Klasse dann eine Objekt erstellen.
Leider habe ich keine Ahnung wie ein solches Array in c++ erstellte werden kann. (die größe sollte also nicht festgelegt weredn müssen...)

kann wer helfem, oder gibt es bessere lösungen für das problem...

dank schon mal im voraus...
 
moin


@Katzenbauer
C:
#include <string>
std::string hello = "Hello World";

;)
Aber das zu verwenden wäre Unsinn!
Warum eine String Klasse zu nehmen um eine andere zu programmieren?!

@wpb
Du muss eine Klasse schreiben die die ein Array erstellt das groß genug ist den angegebenen string auf zu nehmen, wenn du was dazu kommt, musst du mehr Speicher allozieren.
Aber ich glaube ein bsichen mehr Grundlagen wären erstmal nicht schlecht.


mfg
umbrasaxum
 
also mann kann natürlich seinen eigenen string schreiben und muss nicht unbedingt den CSring verwenden. Dafür bräuchtst du eine Liste(eine dynamische Kette von Pointern, die im vergleich zu einem Array, welches in seiner Größe festgekegt ist, in der Größe vareieren kann) aus chars*.

Ich muss dir aber sagen, das ist total nervig, weil du eine menge anderes Zeig mitbedenken musst, also mach lieber kleiner Sachen.
 
Nein eine string baut man normalerweise nicht mit einer Liste auf.

C++:
class String
{
public:
    String();
    String(String const& reference);
    String(const char* cstring);
    ~String();

    String& operator = (String const& reference);
    String& append(String const& str);
    size_t length() const;
    const char* cString() const;

private:

    void resize(size_t newsize);

    char* _data;
    size_t _size;
    size_t _length;
};

String operator + (String const& lh, String const& rh);
ostream& operator << (ostream& stream, String const& str);
istream& operator >> (istream& stream, String const& str);

Das dürften so die wichtigsten Methoden sein, das mit der Größe geht z.B. so: Immer wenn der String größer werden muss rufst du resize() auf, die Methode vergrößert dann ggf. den String:
C++:
void String::resize(size_t newsize)
{
    if(newsize <= _size)
        return;

    char* newdata = new char[newsize + 1]; // hier könnte man auch auf Vorrat reservieren
    strncpy(_data nach newdata); // hab die parameter net im kopf, braucht man nie in C++ :)
    delete[] _data;
    _data = newdata;
    
}
 
Zurück