Как переписать переворот строки с помощью strtok?

В моем учебном заведении было задание перевернуть каждое слово строки

#include <pch.h> #include <iostream> #include <cstring>  #ifdef _MSC_VER // Fixed output error 'cout << answer << endl;' in MSVS Compilator #include <string> #endif  #define MAX_SIZE UINT8_MAX  using namespace std;  string reverse_words(char* word) {   string answer;   for (uint16_t i = 0; i < strlen(word); i++)   {     if (word[i] == ' ')     {       while (word[i] != '' && word[i] == ' ')       {         answer += ' ';         i++;       }     } else {       string temp;       for (uint16_t j = i; (j < strlen(word) && word[j] != ' '); j++, i++)       {         temp = word[j] + temp;       }       answer += temp;     }     i--;   }   return answer; }  int main() {   char word[MAX_SIZE];    cout << "Enter your words $   ";   cin.getline(word, MAX_SIZE);    string answer = reverse_words(word);   cout << answer << endl;    return 0; } 

Он работает правильно, например:

Hello World! olloH !dlroW 

Но потом мне сказали переделать его через strtok, только я вообще не понял как он работает и как мне переделать мой код. Также, когда я пытался использовать strtok в MSVS компиляторе мне выдало предупреждение C4996, из-за чего мне пришлось добавить #pragma warning(disable : 4996)