Heim > Backend-Entwicklung > C++ > Hauptteil

Können Zeichenfolgen im C-Stil Vorlagenargumente in C sein?

Barbara Streisand
Freigeben: 2024-10-30 03:07:29
Original
740 Leute haben es durchsucht

  Can C-Style Strings Be Template Arguments in C  ?

C-Style-Strings als Vorlagenargumente

Im Bereich der C-Programmierung sind Sie möglicherweise auf ein Dilemma gestoßen: Der Versuch, C-Style-Strings als Vorlagenargumente zu verwenden Stilzeichenfolgen als Vorlagenargumente. Dieser Artikel befasst sich mit dem Problem und einer möglichen Problemumgehung.

Der folgende Codeausschnitt veranschaulicht den Versuch:

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

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

Trotz des Fehlens von Kompilierungsfehlern in der Klassendefinition führt die Instanziierung jedoch zu einem Ergebnis eine Fehlermeldung. Das Problem liegt im Versuch, ein String-Literal als Vorlagenargument zu verwenden, was vom Compiler nicht unterstützt wird.

Eine einfache Lösung besteht darin, das String-Literal durch einen Zeichenzeiger zu ersetzen:

<code class="cpp">char global_string[] = "String";

template <char const *str>
struct X {
    const char *GetString() const {
        return str;
    }
};

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

Dieser Code wird erfolgreich kompiliert und ausgeführt, sodass Sie die gespeicherte Zeichenfolge mithilfe der GetString-Methode abrufen können.

Beachten Sie, dass es mit der Einführung von C 11 nun möglich ist, Zeichenfolgenliterale als Vorlagenargumente mithilfe von Zeichen zu verwenden Packungen. Für Compiler, die frühere C-Versionen unterstützen, bleibt die hier vorgestellte Problemumgehung jedoch eine praktikable Option.

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