ฉันกำลังพัฒนาไลบรารี C++ ข้ามแพลตฟอร์ม ฉันต้องการวิธีที่ดีกว่าในการกำหนดค่าคงที่สตริงซึ่งจะใช้ตลอดทั้งโปรแกรม อันไหนดีกว่า static const char * หรือ static const std::string constexpr ทำให้สิ่งใด ๆ ดีขึ้นกว่าการประกาศเก่าหรือไม่
static const char *str = "hello world";
vs
static const string str = "hello world";
เหตุใดฉันจึงต้องการสิ่งนี้: โปรแกรมของฉันต้องเริ่มต้นตัวแปรคงที่ประเภทสตริงตัวอักษรจำนวนมากก่อนที่จะเริ่มแอป และฉันไม่สามารถหลีกเลี่ยงตัวแปรคงที่ได้เนื่องจากใช้ในไฟล์ทั้งหมด หากฉันต้องเพิ่มประสิทธิภาพ แต่ลดเวลาในการเริ่มต้นตัวแปรคงที่ ตามหลักการแล้ว ฉันต้องการให้สิ่งต่าง ๆ ส่วนใหญ่เกิดขึ้นในเวลาคอมไพล์มากกว่ารันไทม์ อันไหนจะเป็นตัวเลือกที่ดีกว่า?
string.length()
หรือคุณต้องการใช้strlen()
สำหรับเรื่องนั้น คุณสามารถ#define STRCONST1 "My String Const"
และอื่นๆ ขึ้นอยู่กับว่าคุณต้องการใช้มันอย่างไรตลอดทั้งโค้ดของคุณ แน่นอนว่าchar *
จะมีคอมไพเลอร์และทรัพยากรน้อยกว่า และ#define
จะน้อยกว่านั้นด้วยซ้ำ แต่std::string
ก็ไม่ได้ให้อะไรมากมายโดยมีค่าใช้จ่ายเพิ่มเติมเพียงเล็กน้อย - person David C. Rankin   schedule 09.04.2019string_view
ซึ่งแทนที่const char*
ใน C++ สมัยใหม่ (และอันไหนใช้ได้กับconstexpr
ซึ่งคุณควรใช้ในกรณีนั้น) - person Matthieu Brucher   schedule 09.04.2019char const*
ให้กับstd::string
ทำไมไม่ใช้ไวยากรณ์ใหม่ที่อนุญาตให้คุณระบุตัวอักษรstd::string
static const string str = "hello world"s;
(หมายเหตุตัวสุดท้าย) en.cppreference.com/w /cpp/string/basic_string/operator%22%22s - person Martin York   schedule 09.04.2019