另外,就算你比较懒,直接写:
a + string(b)
这里string(b)产生的string在传给operator+时是右值,结果会移动而不会再次复制。
所以不用担心效率损失。
【 在 here080 (hero080) 的大作中提到: 】
: 标 题: Re: 居然不能做std::string + std::string_view的操作
: 发信站: 水木社区 (Mon May 31 02:02:01 2021), 站内
:
: 这个确实是标准里一个太不好的地方。希望之后能fix
:
: 但是“得不偿失”是不存在的。你本来用+的时候就需要复制原来的string
:
: 当前比较简单的做法是用absl::StrCat(a, b, c, ...)
: 一般来说如果使用这个库的话不再推荐用+,因为+很容易出现各种坑。
:
: 如果不使用absl库的话可以:
: string result = a;
: a.append(b);
: a.append(c);
: 这里的append是支持string_view的
: 【 在 ziqin (子青|会挽雕弓如满月|西北望|射天狼) 的大作中提到: 】
: : 标 题: 居然不能做std::string + std::string_view的操作
: : 发信站: 水木社区 (Mon May 31 01:53:41 2021), 站内
: :
: : string_view这个坑踩吐了,废了好大劲把传进函数的const std::string&换成了std::string_view,结果发现在很大一批函数里要用传进去的字符串拼接其他的std::string,原来干干净净的连+一下刷error刷疯。
: :
: : 原来const std::string&还不用重建一个std::string,现在反而std::string_view需要再复制一个std::string出来。得不偿失啊...
: : --
: :
: : ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 115.193.190.*]
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 76.126.252.*]
--
FROM 76.126.252.*