首頁 > 後端開發 > C++ > 主體

C 風格字串可以作為 C 中的模板參數嗎?

Barbara Streisand
發布: 2024-10-30 03:07:29
原創
749 人瀏覽過

  Can C-Style Strings Be Template Arguments in C  ?

C 風格字串作為模板參數

在C 程式設計領域,您可能遇到一個困境:嘗試使用C-樣式字符串作為模板參數。本文深入探討了這個問題和潛在的解決方法。

以下程式碼片段說明了這一嘗試:

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

int main() {
    X<"String"> x;
    cout << x.GetString();
}
登入後複製

但是,儘管類別定義中沒有編譯錯誤,但實例化會產生錯誤訊息。問題在於嘗試使用字串文字作為模板參數,而編譯器不支援該參數。

一個簡單的解決方案是將字串文字替換為字元指標:

<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>
登入後複製

此程式碼將成功編譯並執行,允許您使用 GetString 方法擷取儲存的字串。

請注意,隨著 C 11 的出現,現在可以使用字元將字串文字用作模板參數包。但是,對於支援早期 C 版本的編譯器,此處提供的解決方法仍然是一個可行的選擇。

以上是C 風格字串可以作為 C 中的模板參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板