用assign函数将一个list容器的所有元素赋值给一个vector容器的有关问题

用assign函数将一个list容器的所有元素赋值给一个vector容器的问题
题目是:编写程序将一个list容器的所有元素赋值给一个vector容器,其中list容器中存储的是指向C风格的字符串的char*指针,而vector容器的元素则是string类型。
代码如下:
#include "stdafx.h"
#include<list>
#include<vector>
#include<iostream>
#include<string>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
list<char *> clist;
string s;
cout<<"Please input clist:";

while(cin>>s)
{

clist.push_back(const_cast<char *> (s.c_str()));
}
vector<string> svec;
cout<<"Please input svec:";
cin.clear();
while(cin>>s)
svec.push_back(s);
cin.clear();
svec.assign(clist.begin(),clist.end());
cout<<"clist:"<<endl;
list<char*> ::iterator itcc=clist.begin();
while(itcc!=clist.end())
cout<<*itcc<<endl;

vector<string>::iterator its=svec.begin();
while(its!=svec.end())
cout<<*its<<endl;
return 0;
}
输入如下图所示:
调试过程中看到的clist的值和svect的值,为什么和输入的不一样呢?

------解决方案--------------------
http://topic.csdn.net/u/20120304/15/1f4e2277-7fe8-4d43-b5a4-4c06e2e96907.html

你的问题与这帖子中的问题类似

已经得到很好的解答