Minor error, here is the updated code:
while(tokens[i] != NULL)
{
//Let's turn this <string> into a c-string so strtok() will be happy teehee
tokens[i] = strtok(input.c_str(), delimeters);
i++;
}
excerpt about strkok(): "This end of the token is automatically replaced by a null-character by the function, and the beginning of the token is returned by the function."
If I forced the loop with .size() it would have made strtok() work more times than it had to and would have ran off the end of the c-string char array.