Допустим имеется слово "элемент"(слово может быть любым), нужно циклически сдвинуть слово вправо на "n" символов. Например, на 3 символа - получим "ентэлем". Как реализовать данную операцию?
Если у вас С++ - не преумножайте сущности сверх необходимости - воспользуйтесь обычным rotate из стандартной библиотеки...
string s = "элемент";
rotate(s.begin(),s.begin()+(s.length()-3),s.end());
cout << s;
См. https://ideone.com/sHRzfU
Если использовать стандартные функции запрещено - используйте метод двойного реверса.
Разбиваете строку на два куска и собираете из них новую строку (правый кусок соединяем с левым), пример (для простоты использования русских буков используется std::u32string):
#include <iostream>
#include <string>
#include <codecvt>
#include <locale>
int main(int argc, char* argv[]) {
std::u32string str = U"элемент";
int n = 4;
std::u32string result = str.substr(n) + str.substr(0, n);
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> converter;
std::cout << converter.to_bytes(result) << std::endl;
}
https://wandbox.org/permlink/ttBzGaWz1s7ykE50
З.Ы. Идеологически более корректно будет использовать rotate из ответа Harry
Сборка персонального компьютера от Artline: умный выбор для современных пользователей