Rumah > Artikel > pembangunan bahagian belakang > Bolehkah std::string Digunakan dalam Ungkapan Malar dalam 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!