c++ string vs string_view?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Der Unterschied ist das sogenannte Ownership, strings sind "owning" bedeutet, dass ein string tatsächlich die Buchstaben im Objekt gespeichert hat.

String_view ist non owning, hat also keinen Speicher.

Ein string_view ist intern nur ein Zeiger auf einen string und die Länge von diesem.

Da der string_view kleiner ist sind Operationen wie Pass By Value schneller und das ist mitunter einer der Gründe warum es ihn gibt.

Allerdings muss man hierbei auch sehr aufpassen da die Verwendung von string_view sehr schnell zu undefiniertem verhalten führen kann. Wenn zB der string auf den string_view verweist nicht mehr existiert führt die Verwendung von string_view zu Operationen auf einem nicht mehr allozierten Speicher.


x0RRY01 
Beitragsersteller
 03.03.2025, 12:48

danke für die erklärung!

Allerdings muss man hierbei auch sehr aufpassen da die Verwendung von string_view sehr schnell zu undefiniertem verhalten führen kann. Wenn zB der string auf den string_view verweist nicht mehr existiert führt die Verwendung von string_view zu Operationen auf einem nicht mehr allozierten Speicher.

ja, das habe ich in meinem kurs auch gelesen.