首頁 > 後端開發 > C++ > constexpr 變數可以保存 C 中的字串嗎?

constexpr 變數可以保存 C 中的字串嗎?

Patricia Arquette
發布: 2024-11-27 07:35:15
原創
481 人瀏覽過

Can constexpr Variables Hold Strings in C  ?

constexpr 變數和字串文字

在C 中,constexpr 變數必須具有文字類型,這表示它們不能保存具有非平凡析構函數的對象。嘗試在 C 11 中定義 constexpr std::string 變數時,由於 std::string 的非平凡析構函數而遇到錯誤。

constexpr 字串文字的替代

從 C 20 開始,在某些條件下可以在 constexpr 表達式中使用 std::string 。具體來說,std::string 必須在常數求值結束時銷毀。

範例:

constexpr std::size_t n = std::string("hello, world").size();
登入後複製

在此範例中,std::string 將作為計算大小的表達式的一部分被銷毀,因此程式碼有效。

String_View替代方案

在 constexpr 表達式中使用類別字串物件的另一個選項是利用 C 17 中引入的 std::string_view。

範例:

constexpr std::string_view sv = "hello, world";
登入後複製

std::string_view 表示一個不可變、非擁有的類似字串的物件存取底層字元序列。它沒有重要的析構函數,因此適合在 constexpr 表達式中使用。

以上是constexpr 變數可以保存 C 中的字串嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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