Если вы подходите к этому с точки зрения строки в стиле c (как я делал в первый раз, когда делал эту задачу для домашней работы), вы можете попробовать некоторые указатели.Вот основной порядок операций, которые я прошел.Если вы используете std :: string, я уверен, что это не сработает, но это возможно.Это действительно предназначено для строк в стиле c и обучения людей использованию указателей.
Создайте 2 указателя и символ временной замены.
Увеличивайте второй указатель, пока он не будет ссылаться на нулевой завершающий символ.Незамедлительно деинкрементируйте его на единицу.
Поменяйте местами то, на что ссылается первый указатель, на то, на что ссылается второй, пока указатели не встретятся или не пройдут.