【发布时间】:2022-03-01 02:53:46
【问题描述】:
基本上,如果一个人有一个空终止字符串的预加载缓冲区和要引用的长度,并且想要将一个引用传递给一个方法,该方法采用 std::string & 但不复制字符串或拥有它,有可能吗?
这只会有一个有限的生命周期,它的管理方式是它只在缓冲区有效时才有效。
【问题讨论】:
-
不,不可能。你的方法应该一直采用
std::string_view。 -
您所描述的是
string_view。如果您无法更改您正在调用的成员函数(方法不是 C++ 术语)或其接口,理论上您可以使用自己的实现创建一个派生自string的类。但是,basic_string中的相关函数未声明为virtual,并且在作为基类类型访问时无法获得新的行为。
标签: c++ string reference zero-copy