I am making a program where I need to use a function which stores a tokens of a string in a vector. The function did not work properly so I tried the function on a smaller program. Of course, I used string tokenizer function. But it is not working as expected. First, here's the code:
#include <vector>
#include <string>
#include <cstring>
using namespace std;
int main()
{
vector<string> v;
string input = "My name is Aman Kumar";
char* ptr = strtok((char*)input.c_str(), " ");
v.push_back((string)ptr);
while(ptr)
{
ptr = strtok(NULL," ");
v.push_back((string)ptr);
}
cout<<"Coming out";
for(string s:v)
{
cout<<s<<endl;
}
}
Now the problems. I think the issue has something to do with the command:
(string)ptr
This thing works perfectly in the first call, but gives error when present in the while loop. If I comment it out and print ptr, then it works okay, but then the program terminates after the while loop, and doesn't even execute
cout<<"coming out";
leave alone the contents of the vector. But again, if I don't print ptr too, then the first Token "My" which was stored in the vector gets printed. I literally cannot find what is causing this. Any suggestion would be helpful.