Saya sedang mengembangkan perpustakaan C++ lintas platform. Saya menginginkan cara yang lebih baik untuk mendefinisikan konstanta string yang akan digunakan di seluruh program. Mana yang lebih baik static const char * atau static const std::string? Apakah constexpr membuat mereka lebih baik dari deklarasi lama?
static const char *str = "hello world";
vs
static const string str = "hello world";
Mengapa saya memerlukan ini: Program saya mungkin harus menginisialisasi banyak variabel statis bertipe string literal sebelum memulai aplikasi. Dan saya tidak bisa mengabaikan variabel statis karena variabel tersebut digunakan di seluruh file. Jika saya harus meningkatkan kinerja, tetapi mengurangi waktu inisialisasi variabel statis. Idealnya saya ingin sebagian besar hal terjadi pada waktu kompilasi daripada waktu proses. pilihan mana yang lebih baik?
string.length()
atau Anda ingin menggunakanstrlen()
. Untuk itu Anda bisa#define STRCONST1 "My String Const"
dan seterusnya. Itu tergantung pada bagaimana Anda ingin menggunakannya di seluruh kode Anda. Tentu saja,char *
akan lebih sedikit kompiler dan sumber daya yang intensif,#define
bahkan lebih sedikit lagi, tetapistd::string
menawarkan banyak hal, keduanya tidak memberikan sedikit biaya tambahan. - person David C. Rankin   schedule 09.04.2019string_view
yang menggantikanconst char*
di C++ modern (dan yang berfungsi denganconstexpr
yang harus Anda gunakan dalam kasus tersebut). - person Matthieu Brucher   schedule 09.04.2019char const*
kestd::string
. Mengapa tidak menggunakan sintaks baru yang memungkinkan Anda menentukanstd::string
literal.static const string str = "hello world"s;
(perhatikan huruf terakhir) en.cppreference.com/w /cpp/string/basic_string/operator%22%22s - person Martin York   schedule 09.04.2019