C++ – Using strtok with a std::string


I have a string that I would like to tokenize.
But the C strtok() function requires my string to be a char*.
How can I do this simply?

I tried:

token = strtok(str.c_str(), " "); 

which fails because it turns it into a const char*, not a char*

Best Solution

#include <iostream>
#include <string>
#include <sstream>
int main(){
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;
    while (std::getline(iss, token, '-'))
        std::cout << token << std::endl;
    return 0;

Or, as mentioned, use boost for more flexibility.