首頁 >後端開發 >C++ >如何在 C 中使用字串文字作為非類型模板參數?

如何在 C 中使用字串文字作為非類型模板參數?

Patricia Arquette
Patricia Arquette原創
2024-11-29 15:14:14889瀏覽

How can I use string literals as non-type template arguments in C  ?

將字串文字作為非類型模板參數傳遞

在C 模板領域,將接受字串文字的類別模板宣告為非類型模板參數可能是一項令人困惑的任務。許多程式設計師希望能夠在範本宣告中直接指定字串文字,例如my_class.

來解決此需求,而C 不允許直接將字串文字作為非類型傳遞參數,可以採用利用const 字元數組的解決方案。透過定義靜態連結的 const char[] 變數並將其作為模板參數傳遞,我們實現了與使用字串文字類似的效果。

這是演示此方法的可編譯程式碼片段:

#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();
}

在此範例中,定義了一個名為teststr 的靜態連結const char[] 變量,其值為“ Hello world!」。透過將 teststr 作為非類型模板參數傳遞給 cts 類別模板,我們有效地實現了使用字串文字的所需行為。

執行此程式碼會產生以下輸出:

Hello world!

此技術提供了一種解決方法,解決了C 中缺乏對將字串文字作為非類型模板參數傳遞的直接支援的問題,允許程式設計師以方便的方式定義接受類似字串值的類別模板方式。

以上是如何在 C 中使用字串文字作為非類型模板參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn