C++: Eine eigene String-Bibliothek

Operatoren erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Es ist nicht leicht, den Komfort und die Leistungsfähigkeit nachzubilden, die die String-Klassen der STL bieten. Dennoch erzielt die String-Klasse des Trainers einen nahezu vergleichbaren Funktionsumfang. Die dafür bereitstehenden Operatoren erläutert dieser Film.
03:21

Transkript

Die Klasse BWString implementiert Operatoren für eine Reihe von Funktionen, einschließlich Vergleichen und Verketten von Strings. Hier habe ich eine Arbeitskopie der Klasse BWString von den Übungsdateien. Zuerst möchte ich Ihnen den Kopier- und Vertauschungsoperator zeigen. Normalerweise würde man in einer Klasse, die Verschiebesemantik unterstützt, zwei Zuweisungsoperatoren sehen: einen für das Kopieren und einen anderen für das Verschieben. Das Kopieren und Vertauschen-Idiom ist ein effizienterer Kopierzuweisungsoperator, der auch Verschiebesemantik unterstützt. Und das erledigt er für beide sehr effizient und effektiv. Der += Operator realisiert eine Verkettung. Zuerst prüft er, ob dieser Parameter einen String enthält, dann führt er eine Längenprüfung durch, alloziert hier einen Puffer und kopiert dann die Daten. Er lädt den Puffer mit Hilfe von memcpy und kopiert diesen Puffer mit copy_str in dieses Objekt. Dann löscht er den Puffer. Es gibt eine eigene Version des Operators, um einen BWSTring als rechtzeitigen Operanten der Operation zu verwenden. Und es gibt einen Index-Operator. Der Index-Operator prüft zuerst, ob wir außerhalb der Bereichsgrenzen liegen und gibt in diesem Fall 0 zurück. Andernfalls, liefert der Index-Operator ein einzelnes Zeichen aus dem String an der Position des Index. Er prüft also zuerst auf Verletzung der Bereichsgrenzen und gibt andernfalls einfach dieses einzelne Zeichen aus dem String zurück. Der Operator übernimmt einen int als Argument, was technisch falsch ist, denn es sollte ein size_t sein. Dies war erforderlich, um ein Problem mit dem Microsoft C++ Compiler zu lösen. Der Compiler stellt einen Konflikt mit dem C String Konvertierungsoperator fest, auf den wir später in diesem Video eingehen. Er würde in ein Index sehen und würde eine Fehlermeldung liefern, dass der Operator mehrdeutig sei. Dies hat sich geändert, weil der int ein Vorzeichen behafteter Wert ist und das size_t ein Vorzeichen loser wird. Dies hilft dem Microsoft Compiler den Konflikt aufzulösen und ein int bietet ohnehin genügend Platz für unsere Indizes. Die Vergleichsoperatoren sind alle äußerst einfach. Sie verwenden die Funktionen der C Standard Bibliothek für den Vergleich und wie ich meine, genauso einfach. strncmp mit der maximalen Länge für das nummerische Argument und == für doppelt gleich, !=, Null für nicht gleich und so weiter. Das ist tatsächlich so, wie diese Funktionen konzeptionell arbeiten sollen und somit arbeiten sie alle perfekt genau wie diese. Und hier ist unser Konvertierungsoperator für die Rückgabe eines C Strings. Und auch dieser ist wieder sehr sehr einfach. Und schließlich kommen wir hier zum Ende. Wir haben hier eine nicht mem-Funktion für den Plus-Operator. Und diese erlaubt es uns einen String von Strings zu erzeugen, das heißt zu verketten. Dieser Operator wird als Funktion implementiert als nicht Member-Funktion, sodass sie mit einem C String auf jeder Seite des Operators funktioniert. Dadurch können wir Strings von Strings verketten, gemischt mit BWString-Objekten und C Strings. Die Operator-Implementierungen in BWString sind also alle sehr einfach. Es sind alle Standardoperatoren vorhanden und ihre Implementierungen sind klar und unkompliziert.

C++: Eine eigene String-Bibliothek

Erstellen Sie eine eigene String-Bibliothek als hundertprozentigen Ersatz für die String-Bibliothek der C++-STL.

37 min (10 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:21.10.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!