string half_password = password.str();
    if(shift < 0) //left shift
        rotate(half_password.begin(), half_password.begin() + (-1*shift), half_password.end());
    if(shift > 0) //right shift
        rotate(half_password.rbegin(), half_password.rbegin() + shift, half_password.rend());

现在,如果| shift | > 7,且half_password的长度为8,则我的程序由于分段错误而崩溃。我的问题是rotate函数是否不允许旋转超过字符串的最高索引?

我对此没有问题,逻辑工作正常。我想知道这是否是rotate函数的工作方式。

最佳答案

cppreference.com



当您超出最大索引大小或小于最小索引大小时,这些无效范围。

关于c++ - C++程序在旋转字符串超过其长度时崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18356019/

10-15 23:37