You can do this the following way
#include <string>
#include <list>
#include <sstream>
#include <iterator>
//...
std::istringstream is( "My name is Jonathan" );
std::list<std::string> lst( ( std::istream_iterator<std::string>( is ) ),
std::istream_iterator<std::string>() );
Here is a demonstrative program
#include <iostream>
#include <string>
#include <list>
#include <sstream>
#include <iterator>
int main()
{
std::istringstream is( "My name is Jonathan" );
std::list<std::string> lst( ( std::istream_iterator<std::string>( is ) ),
std::istream_iterator<std::string>() );
for ( const std::string &s : lst ) std::cout << s << ' ';
std::cout << std::endl;
return 0;
}
Its output is
My name is Jonathan
If you want to apply this task to your own list then you can use the following approach
std::istringstream is( "My name is Jonathan" );
std::string word;
while ( is >> word )
{
// append your list with the word
}