C/C++

Строки с++, не получается написать никак код

Задача стоит такая:
"Последнее слово строки поставить после первого."
Суть в том чтобы написать через string char[4343434343] и тд, а у меня получилось только через вектора, по другому вообще не могу допетрить, помогите пожалуйста. Желательно в простом виде, а то я не очень разбираюсь ( только начал изучать )
#include <iostream>
#include <string>

using namespace std;

// символ, не относящийся к слову
bool not_word_char(const int c)
{
return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '.'
|| c == ',' || c == ';' || c == ':' || c == '!' || c == '\?'
|| c == '(' || c == ')';
}

int main()
{
string str,word,tmp;
int last,x;
getline(cin,str);
x = str.length() - 1;
while(not_word_char(str[x]) && x >= 0) x--; // ищем конец последнего слова
while(!not_word_char(str[x]) && x >= 0) x--; // ищем символ до последнего слова
last = x+1; // указатель на начало последнего слова
word += str[last-1]; // копируем символ до этого слова
for(int y = last; y < str.length(); y++)
{
//cout << __LINE__ << ' ' << y << " \"" << str[y] << '\"' << endl;
if(not_word_char(str[y])) break;
word += str[y]; // записываем последнее слово
}
//cout << __LINE__ << ' ' << word << ' ' << last << endl;
x = 0;
while(not_word_char(str[x]) && x < last)
{ // ищем начало первого слова
tmp += str[x];
x++;
}
while(!not_word_char(str[x]) && x < last)
{ // копируем первое слово
tmp += str[x];
x++;
}
tmp += word; // копируем последнее слово
while(x < last - 1)
{ // копируем то, что до последнего слова
tmp += str[x];
x++;
}
x += word.length(); // пропускаем последнее слово
while(x < str.length())
{
tmp += str[x]; // копируем то, что после последнего слова
x++;
}
str = tmp;
cout << str << endl;

return 0;
}
Игорь Терехин
Игорь Терехин
89 334
Лучший ответ
Игорь Терехин надо было
bool not_word_char(const char c)
но, в принципе, и так работает программа.
Если что, пишите.