Problem:
When you attempt to do operations like string *pName = &name and
string *pNameLast = &name + nChar - 1;, you're treating std::string's as char*'s. You cannot do that and expect the code to work.
Solution:
Treat std::string's as std::string's. Instead of doing string *pName = &name declare pName as an int and use the operator [] of std::string to access to the values. Similarly with pNameLast. You also have to declare string save as a char or, as I prefer, use the std::swap function.
Additional info:
- As far as I can see you're probably using using namespace std;as you're declaringstd::stringasstring. If that is the case consider thatusing namespace std;is considered a bad practice (More info here).
Full code:
#include <iostream>
int main() {
    std::string name = "george";
    int length = name.size();
    int pNameFirst = 0;
    int pNameLast = length - 1;
    while(pNameFirst < pNameLast)
    {
        std::swap(name[pNameFirst],name[pNameLast]);
        pNameFirst++;
        pNameLast--;
    }
    std::cout << name << std::endl;
}