


Wie kann ich String-Literale als Nichttyp-Vorlagenargumente in C verwenden?
Nov 29, 2024 pm 03:14 PMÜbergabe von String-Literalen als Nicht-Typ-Vorlagenargumente
Im Bereich des C-Templatings die Deklaration einer Klassenvorlage, die ein String-Literal als akzeptiert Ein nicht typisierter Vorlagenparameter kann eine verwirrende Aufgabe sein. Viele Programmierer wünschen sich die Möglichkeit, ein String-Literal direkt in einer Vorlagendeklaration anzugeben, z. B. my_class<"string">.
Um diesem Bedarf gerecht zu werden, erlaubt C zwar nicht direkt die Übergabe von String-Literalen als Nicht-Typ Argumente kann eine Lösung verwendet werden, die konstante Zeichenarrays verwendet. Indem wir eine statisch verknüpfte const char[]-Variable definieren und sie als Vorlagenparameter übergeben, erzielen wir einen ähnlichen Effekt wie die Verwendung von Zeichenfolgenliteralen.
Hier ist ein kompilierbarer Codeausschnitt, der diesen Ansatz demonstriert:
#include <iostream> template<const char *str> struct cts { void p() {std::cout << str;} }; static const char teststr[] = "Hello world!"; int main() { cts<teststr> o; o.p(); }
In diesem Beispiel wird eine statisch verknüpfte const char[]-Variable namens teststr mit dem Wert „Hello world!“ definiert. Indem wir teststr als nicht typisierten Vorlagenparameter an die CTS-Klassenvorlage übergeben, erreichen wir effektiv das gewünschte Verhalten bei der Verwendung eines Zeichenfolgenliterals.
Das Ausführen dieses Codes erzeugt die folgende Ausgabe:
Hello world!
Diese Technik bietet einen Workaround für den Mangel an direkter Unterstützung für die Übergabe von String-Literalen als Nicht-Typ-Template-Argumente in C und ermöglicht es Programmierern, Klassenvorlagen zu definieren, die string-ähnliche Werte auf praktische Weise akzeptieren Art und Weise.
Das obige ist der detaillierte Inhalt vonWie kann ich String-Literale als Nichttyp-Vorlagenargumente in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
