我怎样才能通过引用将c ++字符串分配给另一个字符串

coi*_*ung 1 c++ string reference

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

但是,此操作将复制内容dir_1dir_2带来一些开销.我怎么能减少这个开销?我有可能只通过他们的参考文献实现作业吗?

Vit*_*meo 6

创建str一个引用并使用三元运算符对其进行初始化:

const std::string& str = condition ? dir_1 : dir_2;
Run Code Online (Sandbox Code Playgroud)

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


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

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

或者简单地将初始化逻辑重构为不同的函数.