Heim > Backend-Entwicklung > C++ > Können Zeichenfolgen im C-Stil als Vorlagenargumente in C verwendet werden?

Können Zeichenfolgen im C-Stil als Vorlagenargumente in C verwendet werden?

Susan Sarandon
Freigeben: 2024-10-30 17:54:31
Original
609 Leute haben es durchsucht

Can C-Style Strings Be Used as Template Arguments in C  ?

Können Zeichenfolgen im C-Stil Vorlagenargumente sein?

Ihr Versuch, eine Vorlage mithilfe einer Zeichenfolge im C-Stil zu instanziieren, schlägt mit einem Fehler fehl zur ungültigen Verwendung eines String-Literals als Vorlagenargument.

Während Zeichenfolgen im C-Stil nicht direkt als Vorlagenargumente dienen können, gibt es alternative Ansätze:

Verwenden Sie einen Zeiger auf a Konstante Zeichenfolge

Eine Problemumgehung besteht darin, einen Zeiger auf eine konstante Zeichenfolge als Vorlagenargument zu verwenden:

<code class="c++">template <char const *str>
struct X {
    const char *GetString() const {
        return str;
    }
};

char global_string[] = "String";

int main() {
    X<global_string> x;
    cout << x.GetString();
}
Nach dem Login kopieren

Update: Zeichenfolgenliterale als Vorlagenargumente mit C 11

Ab C 11 ist es möglich, Zeichenfolgenliterale als Vorlagenargumente zu verwenden, indem Zeichenpakete verwendet werden:

<code class="c++">template <char ...c>
struct X {
    const char (*GetString)() {
        return [](char*... s) { return s; }(c...);
    }
};

int main() {
    X<"S", "t", "r", "i", "n", "g"> x;
    cout << x.GetString();
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKönnen Zeichenfolgen im C-Stil als Vorlagenargumente in C verwendet werden?. 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