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
692 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!

sumber:php.cn
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