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

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

DDD
Lepaskan: 2024-11-24 04:09:11
asal
716 orang telah melayarinya

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();
Salin selepas log masuk

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";
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan