Möchten Sie mit Ihrem Team teilnehmen? Profitieren Sie von unseren Gruppenrabatten! Schreiben Sie an events@dpunkt.de

String-Verarbeitung in Qt 6: effizienter, kompatibler, ausdrucksstärker

Qt 5.10 hat mit der Einführung von QStringView den Grundstein für eine Revolution in den Qt-String-APIs gelegt. Statt sämtliche String-Datenquellen erst mühsam und (lauf)zeitintensiv nach QString konvertieren zu müssen, konnten Qt-Entwickler nun Funktionen schreiben, die QStringViews und damit alle String-Container als Argumente akzeptieren, die ein C-Array-kompatibles Speicher-Layout und einen zu QStringView kompatiblen Character-Typen besitzen (std::vector, QString, u"String Literals" etc.). Qt 6 implementiert nun sehr viel breitere QStringView-APIs und fügt der API den neuen QUtf8StringView-Typ hinzu. Insbesondere ersetzten die Entwickler*innen die QStringRef-Klasse, die QString-Substrings modellierte, großflächig durch QStringView.

Ebenfalls neu in Qt 6 ist QStringTokenizer, ein String-Splitter ohne
Speicher- und Laufzeit-Overhead. Nutzer, die ihre Programme kompatibel zu Qt 5 und Qt 6 halten wollen, können diese Komponente via KDABs KDToolBox für Qt 5 nachrüsten.

Seine Kulminierung findet das neue String-Handling in QAnyStringView, einem Variant-StringView, der UTF-8, UTF-16 und Latin-1-kodierte Strings akzeptiert und damit ein universeller String-Interface-Typ ist, der das Überladen von Funktionen für verschiedene String-Typen endgültig obsolet macht und die Leistungsfähigkeit des NOI-Idioms (Non-Owning-Interface) eindrucksvoll demonstriert.

Marc wird die Teilnehmende mit den neuen Klassen und den dazugehörigen Entwurfsmustern bekannt machen und ein paar Einblicke in die innovativen Implementierungsstrategien hinter QStringTokenizer und QAnyStringView geben.

Vorkenntnisse

  • Vorwissen zu Qt 5, insbesondere QString und QStringView, ist hilfreich
  • Kein Vorwissen zum Thema Qt 6 notwendig
  • Die Beschreibung der Implementierungsstrategien setzt fortgeschrittene C++-Kenntnisse voraus (z.B. Rvalue-Referenzen), macht aber nur einen kleinen Teil des Vortrags aus

Lernziele

  • Integration von QAnyStringView in die eigenen APIs
  • Versiertes und entwurfsmustergetreues Anwenden der neuen Qt-String-Klassen
  • Einblicke in modernes C++-API-Design

Speaker

 

Marc Mutz
Marc Mutz ist Senior Software Engineer und Trainer bei KDAB, Teilzeit-Mitglied des ISO-C++-Komitees und Autor der "Effective Qt" Artikelserie. Er hat bei KDAB die Kurse "In-depth Mutlithreading with Qt", "Modern C++ - C++11/14/17" und "Post-Modern C++ - C++20" ins Leben gerufen, und betreibt "-Wmarc", ein Blog über Qt, C++, und Boost. Als zweitproduktivster Contributor in QtBase und ehemaliger Maintainer des QtWidgets-Moduls nutzt er das Framework seit mehr als zwei Dekaden, zunächst als KDE-Entwickler, und dann im Job. Seine letzten Beiträge zu Qt sind QAnyStringView, eine revolutionäre Abstraktion von String-Daten von zugehörigen Containern, und QStringTokenizer, ein overhead-freier String-Splitter.

 

betterCode-Newsletter

Sie möchten über die betterCode() Qt
auf dem Laufenden gehalten werden?

 

Anmelden