Heim > Backend-Entwicklung > C++ > Können constexpr-Variablen Strings in C enthalten?

Können constexpr-Variablen Strings in C enthalten?

Patricia Arquette
Freigeben: 2024-11-27 07:35:15
Original
447 Leute haben es durchsucht

Can constexpr Variables Hold Strings in C  ?

constexpr-Variablen und String-Literale

In C müssen constexpr-Variablen einen Literaltyp haben, was bedeutet, dass sie keine Objekte mit nicht trivialen Destruktoren enthalten können . Beim Versuch, eine constexpr std::string-Variable in C 11 zu definieren, tritt aufgrund des nicht trivialen Destruktors von std::string ein Fehler auf.

Alternative für constexpr-String-Literale

Ab C 20 ist es unter bestimmten Bedingungen möglich, std::string in constexpr-Ausdrücken zu verwenden. Insbesondere muss der std::string am Ende der konstanten Auswertung zerstört werden.

Beispiel:

constexpr std::size_t n = std::string("hello, world").size();
Nach dem Login kopieren

In diesem Beispiel wird der std::string zerstört als Teil des Ausdrucks, der die Größe auswertet, zerstört werden, sodass der Code gültig ist.

String_View Alternative

Eine weitere Option zur Verwendung stringähnlicher Objekte in constexpr-Ausdrücken ist die Verwendung von std::string_view, das in C 17 eingeführt wurde.

Beispiel:

constexpr std::string_view sv = "hello, world";
Nach dem Login kopieren

std::string_view stellt ein stringähnliches Objekt mit unveränderlichem, nicht besitzendem Zugriff auf eine zugrunde liegende Sequenz dar von Charakteren. Es verfügt über keinen nicht-trivialen Destruktor, wodurch es für die Verwendung in constexpr-Ausdrücken geeignet ist.

Das obige ist der detaillierte Inhalt vonKönnen constexpr-Variablen Strings in C enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage