【发布时间】:2017-11-22 00:33:28
【问题描述】:
从 C++17 开始,我们有了 std::string_view,这是一种对连续字符序列的轻量级视图,可避免不必要的数据复制。现在通常建议使用std::string_view,而不是使用const std::string& 参数。
但是,很快就会发现从const std::string& 切换到std::string_view 会破坏使用字符串连接的代码,因为不支持连接std::string 和std::string_view:
std::string{"abc"} + std::string_view{"def"}; // ill-formed (fails to compile)
std::string_view{"abc"} + std::string{"def"}; // ill-formed (fails to compile)
为什么标准中不支持串联std::string和std::string_view?
【问题讨论】:
-
很可能是疏忽。也就是说,添加
operator +即可使代码正常工作并不需要太多。 -
我还想念的是 std::basic_string 的成员函数,它返回子字符串的 std::basic_string_view (类似于“substr”成员函数),可能命名为“substr_view”。
标签: c++ string c++17 string-view