我正在尝试制作一个将字符串的常量引用作为输入并在将字符串的每个字符向右旋转1个位置后返回字符串的函数。使用引用和指针仍然使我感到困惑,我不确定如何从常量引用中获取字符串。

string rotate(const string &str){
     string *uno =  &str;
     string dos = rotate(uno.rbegin(), uno.rbegin() + 1, uno.rend());
     return dos;}


这是我到目前为止所获得的,但尚未编译。如何正确地从常量引用中获取字符串的任何技巧将不胜感激。

最佳答案

您不能在不违反参数上const约定的情况下就地执行旋转,因此应复制输入并返回新字符串:

string rotate(const string &str){
     string uno = str;
     rotate(uno.rbegin(), uno.rbegin() + 1, uno.rend());
     return uno;
}


另一个合理的选择是使用std::rotate_copy

10-08 11:10