C++ 如果我有很多前缀相似的字符串,有没有理由用这个前缀创建一个子字符串?

C++ 如果我有很多前缀相似的字符串,有没有理由用这个前缀创建一个子字符串?,c++,string,C++,String,我不确定该如何表述这个问题。 我认为用一个例子来说明更容易 假设我的代码中有以下字符串: std::string str1=野狗; std::string str2=野生猫; std::string str3=野生动物和人类; std::string str4=野生小妖精; std::string str5=野生_龙 除了编码风格之外,还有什么其他的理由可以这样写代码吗 std::string prefix=Wild; std::string str1=前缀+狗; std::string str

我不确定该如何表述这个问题。 我认为用一个例子来说明更容易

假设我的代码中有以下字符串: std::string str1=野狗; std::string str2=野生猫; std::string str3=野生动物和人类; std::string str4=野生小妖精; std::string str5=野生_龙

除了编码风格之外,还有什么其他的理由可以这样写代码吗

std::string prefix=Wild; std::string str1=前缀+狗; std::string str2=前缀+Cat; std::string str3=前缀+人; std::string str4=前缀+妖精; std::string str5=前缀+龙


注意:没有其他变量可以代替wild,所以它的前缀总是相同的。我想,我设计得有点过分了:。这应该具有尽可能好的性能,并且前缀只指定一次。

这取决于您想对字符串执行什么操作。它不会为你节省任何内存。它甚至可能会稍微慢一点,因为您创建了一个临时文件,但编译器可能会对此进行优化。就我个人而言,我认为编码风格本身就是这样做的充分理由^^^这两种选择都有理由:DRY don repeat Wild。当您想将其更改为驯服时,您只想在一个位置更改它,而不是创建不必要的临时字符串。没有更多的背景,就不可能做出决定。一般来说,编写代码是为了可读性,而不是为了节省内存或几个cpu周期。我不太确定,但也许最好将前缀设置为constexpr const char*我们不能创建constexpr std::string。因此,编译器可能只会创建上面的第一个代码,而您仍然会将其擦干。