Я думаю, что ваша проблема в этом цикле:
int j=0;
for (rit = y.rbegin(); rit < y.rend(); rit++){
z[j] = *rit;
j++;
}
Обратите внимание, что вы пишете в строку z
в разных позициях. Однако вы на самом деле не инициализировали z
, чтобы в нем были какие-либо элементы, так что это запись в несуществующие местоположения, что приводит к неопределенному поведению.
Чтобы это исправить, вместо записи в местоположения в z попробуйте добавить новые символы в конец:
for (rit = y.rbegin(); rit < y.rend(); rit++){
z += *rit;
}