std::string
не изменяется автоматически, поэтому res[j]=...
не работает.
Чтобы исправить это, вы можете:
- заменить
res[j]=...
на res.push_back(...)
- укажите размер строки заранее, например, замените
string res;
на string res(s.size(), '\0');
Также обратите внимание, что при производстве лучше использовать:
string res = s;
std::reverse(s.begin(), s.end());
ОБНОВЛЕНИЕ. Как указал @Blastfurnace, еще лучшей версией будет:
std::string res(s.rbegin(), s.rend());