我如何通过引用将 c++ 字符串分配给另一个字符串

How could I assign a c++ string to another by its reference

本文关键字:字符串 分配 另一个 c++ 何通过 引用      更新时间:2023-10-16

我有两个 c++ 字符串std::string dir_1("./dir1"); std::string dir_2("./dir2");我需要根据某些条件将它们分配给另一个字符串:if (...) str = dir_1; else str = dir_2;.

但是,此操作将复制dir_1的内容并dir_2这会带来一些开销。如何减少此开销?我是否可能只通过他们的引用来实现赋值?

str作为引用并使用三元运算符对其进行初始化:

const std::string& str = condition ? dir_1 : dir_2;

这将不需要和复制或移动原始字符串。


如果条件更复杂,可以使用 IIFE(立即调用的函数表达式(:

const std::string& str = []() -> auto&
{
if(condition) return dir_1;
else return dir_2;
}();

或者只是将初始化逻辑重构为不同的函数。