The criteria for your for
loop in palindrome
doesn't look right:
for(unsigned int i = x_str.length(); i > 0; i++){
x_str_rev += x_str[i];
};
I expect that you meant to go through the string backwards right? What you're doing in the above code snippet is starting at the end of the string and going off into no-man's-land, which is going to cause undefined behaviour.
You should use a decrementing loop like this:
for(unsigned int i = x_str.length() - 1; i >= 0; --i){
x_str_rev += x_str[i];
};