Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah std::string Digunakan dalam Ungkapan Malar dalam C ?

Bolehkah std::string Digunakan dalam Ungkapan Malar dalam C ?

DDD
DDDasal
2024-11-24 04:09:11612semak imbas

Can std::string Be Used in Constant Expressions in C  ?

Menggunakan std::string dalam Ungkapan Malar

Secara amnya tidak boleh menggunakan std::string dalam ungkapan malar. Sebabnya ialah std::string mempunyai pemusnah bukan remeh, menjadikan penggunaannya tidak serasi dengan keperluan ungkapan malar untuk diselesaikan pada masa penyusunan.

C 20 Solution

Walau bagaimanapun, dengan C 20, pengecualian terhad telah diperkenalkan. Jika std::string dimusnahkan sebelum tamat penilaian berterusan, ia boleh digunakan dalam ungkapan malar. Contohnya:

constexpr std::size_t n = std::string("hello, world").size();

Dalam keadaan ini, std::string dicipta dan dimusnahkan dalam ungkapan malar, jadi penggunaannya dibenarkan.

Penyelesaian Alternatif (C 17 dan Kemudian)

Alternatif praktikal kepada std::string untuk digunakan dalam ungkapan malar ialah std::string_view. String_view ialah rujukan yang tidak boleh diubah, bukan milik kepada jujukan aksara. Ia menyediakan kefungsian yang serupa dengan std::string, tetapi tanpa pemusnah, menjadikannya sesuai untuk ekspresi berterusan:

constexpr std::string_view sv = "hello, world";

Atas ialah kandungan terperinci Bolehkah std::string Digunakan dalam Ungkapan Malar dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn