4.34习题:编写程序读入一组 string 类型的数据,并将它们存储在 vector 中。接着,把该 vector 对象复制给一个字符指针数组。为 vector 中的每个元素创建一个新的字符数
组,并把该 vector 元素的数据复制到相应的字符数组中,最后把指向该数组的指针插入字符指针数组。
#include "iostream"
#include "vector"
#include "cstring"
#include "string"
#include "ctype.h"
using namespace std;
int main()
{
vector<string> vs;
string str;
while(cin>>str)
{
vs.push_back(str);
}
char * *parr = new char* [vs.size()];
int ix=0;
for (vector<string>::iterator iter=vs.begin();iter!=vs.end();++iter,++ix)
{
char *pc = new char[ (*iter).size()+1];
strcpy(pc,(*iter).c_str());
parr[ix]=pc;
}
//输出vector对象的内容
for (vector<string>::iterator iter=vs.begin();iter!=vs.end();++iter)
{
cout<<*iter<<" ";
}
cout<<endl;
//输出字符数组的内容
for (ix=0;ix!=vs.size();++ix)
{
cout<<parr[ix]<<" ";
}
cout<<endl;
//释放字符数组的内容
for (ix=0;ix!=vs.size();++ix)
{
delete[] parr[ix];
}
//释放各个字符数组
delete[] parr;
return 0;
}
输出二维数组中的所有元素!
#include "iostream"
#include "vector"
#include "cstring"
#include "string"
#include "ctype.h"
using namespace std;
int main()
{
int ia[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
/* 不使用typedef方式
int (*pi)[4]=ia;//数组指针
int (*qi)[4]=ia;
for (;qi!=pi+3;++qi)
{
for(int *q=*qi;q!=*qi+4;++q)
{
cout<<*q<<endl;
}
}
*/
//使用typedef方式
typedef int int_array[4];
int_array *ip=ia;
for (;ip!=ia+3;++ip)
{
for (int *q=*ip;q!=*ip+4;++q)
//因为ip是一个指向 int [4] 类型的指针 。也就是是 ip=&int [4] ,那么 *ip就是 int [4];
//对ip进行街引用获得一个有4个int类型元素的数组,通常,使用这个数组时,系统会自动将它转换为指向该数组的第一个元素的指针。
{
cout<<*q<<" ";
}
}
cout<<endl;
return 0;
}