You definitely can't use find_first_of and substr. They are members of the std::string class, and as such must be called using either the "dot" or "arrow" operator on a std::string object or pointer to std::string respectively. This means you won't even be able to get to them from a C-style string (char array).
The constructor for an istringstream has a reference to a std::string as an argument, so you may be able to create one from a char array because you can construct an std::string from a char array, but I have my doubts. Whatever you do to the stream probably won't be reflected in the array though.
The make_pair function is a templatized function, which means it can accept anything as an argument. You can use a char array as an argument.
But you want to know the best way to find out? Try it yourself. There's precious few better ways to learn than through experimentation.
I haven't read your example code as I'm in a rush, but if you ever have a char array, and you want to carry out string operations on it, you can turn it into a string, carry out your operations, and then turn it back to a char array.
char aCharArray = "Hello World";
// Carry out string operations....
char* cstr = new char [aString.size()+1];
strcpy (cstr, aString.c_str());
std::cout << cstr;
// Ignore memory leaks, I'm not being paid enough to worry about them :p