The strtok_r() function is the re-entrant version of strtok(). This means that multiple threads can process the same string at the same time. On a single threaded system, this is a useless feature that takes up far more space in Flash than the simpler to use, non-re-entrant version. No one should be using strtok_r on the Arduino.
But this does not work
Of course not. There is a world of difference between a string and a String. They are not even remotely interchangeable.