如何传递子字符串而不在c ++中实际创建临时对象

aja*_*ddy 4 c++ string

让我们说我有一个功能

str_rev(string &s, int len) {}
Run Code Online (Sandbox Code Playgroud)

它反转长度为len的字符串s

我想要从索引5和长度10开始反转长字符串的子字符串

为此,我被迫首先调用substring函数,然后调用str_rev函数传递子字符串

sub_string = long_str.substr(5, 10)
str_rev(sub_string, 10);
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有实际创建临时对象的情况下实现这一目标?

sbi*_*sbi 8

使您的函数获取迭代器(或者更确切地说,使用std::reverse())并传入分隔子串的迭代器.