String Klasse



  • Hallo,
    kleine frage ich hänge gerade an einer Aufgabe, wie könnte ich so etwas

    int main() {
    String s1;
    String s2("Vogelsang");
    String s3(s2);
    s1 += s2;
    s2 = s3;
    cout << s2 << endl;
    cout << s2[ 2 ] << endl;
    };
    

    Implementieren ohne den string container zu nutzen also muss man hier eine eigene string klasse schreiben, konstruktor / werte speichern ist bereits getan aber wie kann ich zb cout << s2 << endl; realisieren?



  • std::ostream& operator<<(std::ostream& out, String const& str) {
      // Implementation der Ausgabe hier
      // (Ausgabe: out << "Zeichenkette". Genau so wie bei cout.)
    }
    


  • Weirdo schrieb:

    wie kann ich zb cout << s2 << endl; realisieren?

    std::ostream& operator << (std::ostream& stream, const my_string& s)
    {
      for (auto c : s)
        stream << c;
      return stream;
    }
    


  • *Edit
    Ich habe hier gerade Muell geschrieben weil ich deine Frage falsch gelesen habe



  • Ich hab die implementierung von cooki ausprobiert leider funktioniert sie nicht ganz kann jemand es mal nur für diesen fall komplett implementieren?



  • was funktioniert denn nicht? hast du deinem compiler gesagt, das er c++0x mittel nutzen muss(beim gcc z. B. -std=c++0x ) und du musst den header <intitializer_list> einbinden.



  • Und deine Stringklasse muss iteratoren bereitstellen. Falls die nur operator [] hat geht auch

    std::ostream& operator << (std::ostream& stream, const my_string& s)
    {
      for (std::size_t i = 0; i != s.size(); ++i)
        stream << s[i];
      return stream;
    }
    

Anmelden zum Antworten