En c++ tengo que dar vuelta cada n caracteres una palabra, osea por ejemplo cada n = 2, dar vuelta el string HOLA, me tiene que quedar OHAL
Escribí este código pero no está resultando y no me doy cuenta del error

Alguien me puede ayudar ?
Código
string invertirBloque(string s,int k, int i){ int j = k - 1 + i; while(j >= i){ s.push_back(s[j]); j--; } return s; } string darVueltaK(string s, int k){ int l = s.size(); int i = 0; while(i <= k - 1 + i && k - 1 + i < l){ s = invertirBloque(s, k, i) ; i = i + k; } return s; }