C++ How to convert string to char*
c++, casting, strtok
Solution
Use `strdup()` to copy the `const char *` returned by `c_str()` into a `char *` (remember to `free()` it afterwards)
Note that `strdup()` and `free()` are C, not C++, functions and you'd be better off using methods of `std::string` instead.
The second strtok_s() is needed because otherwise your loop won't terminate (`token`'s value won't change).
Problem
I need to convert a string to a char * for use in strtok_s and have been unable to figure it out. c_str() converts to a const char *, which is incompatible. Also, if someone could explain to me why the second strtok_s function (inside the loop) is necessary, it'd be a great help. Why do i need to explicitly advance the token rather than, for example, the while loop it is in, which fetches each line of a file consecutively, implicitly. ``` while( getline(myFile, line) ) { // Only one line anyway. . . is there a better way? char * con = line.c_str(); token = strtok_s( con, "#", &next_token); while ((token != NULL)) { printf( " %s\n", token ); token = strtok_s( NULL, "#", &next_token); } } ``` related question.