Constexpr Variables and String Literal
Dalam C , constexpr variable mesti mempunyai jenis literal, bermakna ia tidak boleh memegang objek dengan pemusnah bukan remeh . Apabila cuba mentakrifkan pembolehubah rentetan constexpr std::string dalam C 11, ralat ditemui disebabkan oleh pemusnah bukan remeh bagi std::string.
Alternatif untuk Constexpr String Literal
Setakat C 20, adalah mungkin untuk menggunakan std::string dalam constexpr ungkapan dalam keadaan tertentu. Khususnya, std::string mesti dimusnahkan pada akhir penilaian berterusan.
Contoh:
constexpr std::size_t n = std::string("hello, world").size();
Dalam contoh ini, std::string akan dimusnahkan sebagai sebahagian daripada ungkapan yang menilai saiz, jadi kod itu sah.
String_View Alternatif
Pilihan lain untuk menggunakan objek seperti rentetan dalam ungkapan constexpr ialah menggunakan std::string_view yang diperkenalkan dalam C 17.
Contoh:
constexpr std::string_view sv = "hello, world";
std::string_view mewakili objek seperti rentetan dengan tidak berubah, akses bukan memiliki kepada urutan asas aksara. Ia tidak mempunyai pemusnah yang tidak remeh, menjadikannya sesuai untuk digunakan dalam ungkapan constexpr.
Atas ialah kandungan terperinci Bolehkah Pembolehubah constexpr Memegang Rentetan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!