ホームページ >バックエンド開発 >C++ >constexpr 変数は C で文字列を保持できますか?

constexpr 変数は C で文字列を保持できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 07:35:15430ブラウズ

Can constexpr Variables Hold Strings in C  ?

constexpr 変数と文字列リテラル

C では、constexpr 変数はリテラル型でなければなりません。これは、自明でないデストラクターを持つオブジェクトを保持できないことを意味します。 。 C 11 で constexpr std::string 変数を定義しようとすると、std::string の非自明なデストラクターが原因でエラーが発生します。

constexpr 文字列リテラルの代替

C 20 以降、 std::string を使用できるようになりました。特定の条件下での constexpr 式。具体的には、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。