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/