#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int main()
{
vector<string>ivec;
string str_in;
cout<<"enter strings and Crt + d to quit"<<endl;
while(cin>>str_in)
ivec.push_back(str_in);
char **prray=new char *[ivec.size()];
size_t ix=0;
for(vector<string>::iterator it=ivec.begin();it!=ivec.end();++it,++ix)
{
char *p=new char[(*it).size()+1];
strcpy(p,(*it).c_str());
prray[ix]=p;
}
cout<<"content of vector"<<endl;
for(vector<string>::iterator it2=ivec.begin();it2!=ivec.end();it2++)
cout<<*it2<<endl;
cout<<"content of charator array is"<<endl;
for(ix=0;ix!=ivec.size();++ix)
cout<<prray[ix]<<endl;
for(ix=0;ix!=ivec.size();++ix);
delete [] prray[ix];
return 0;
}
~
我上面测试的程序,for(vector<string>::iterator it=ivec.begin();it!=ivec.end();++it,++ix)
或者这句for(ix=0;ix!=ivec.size();++ix);
的自动运算符的++放在后面程序执行完就有段错误,放在前面即前自增就没有段错误,不知道为什么?
刚才有实验了几次居然又行了,不知道为什么。。。。。。,查了下网上的说法不过好像++放前面效率稍微高点