习题4.35,不多说了,直接贴代码:
int main()
{
vector<string> svec;
string str;
while(cin>>str)
{
svec.push_back(str);
}
for(vector<string>::iterator itr = svec.begin(); itr != svec.end(); itr++)
{
cout<<*itr<<endl;
}
char **ptr = new char *[svec.size()];
char **p = ptr;
for(itr = svec.begin(); itr != svec.end(); itr++, p++)
{
*p = new char[(*itr).size() + 1];
strcpy(*p,(*itr).c_str());
}
for(vector<string>::size_type ix = 0, p = ptr; ix < svec.size(); ix++, p++)
{
cout<<*p<<endl;
}
return 0;
}
编译后最后的输出语句出错:
D:\test.cpp(64) : error C2040: 'p' : 'unsigned int' differs in levels of indirection from 'char ** '
D:\test.cpp(64) : error C2440: 'initializing' : cannot convert from 'char ** ' to 'unsigned int'
为什么?