您的位置:首页 > 其它

编写程序读入一组string类型的数据,并将它们存储在vector中,再将vector对象复制给一个字符指针数组。

2017-06-01 19:42 826 查看
1.具体要求:

编写程序读入一组string类型的数据,并将它们存储在vector中,接着,把该vector对象复制给一个字符指针数组。为vector中的每个元素创建一个新的字符数组,并把该vector元素的数据复制到相应的字符数组中,最后把指向该数组的指针插入字符指针数组。(C++ Primer中文第四版 习题4.34)

2.代码实现

#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include<iterator>
using namespace std;
int main()
{
vector<string> vec;
string str_temp;
//向vector中输入string类对象,遇到"ctrl+Z"结束输入
cout<<"Enter string object(ctrl+Z to end):"<<endl;
while(cin>>str_temp)
vec.push_back(str_temp);

//动态创建一个字符指针数组
char **ptr=new char* [vec.size()];
//处理vector中元素
size_t i=0;
for(vector<string>::iterator ite=vec.begin();ite!=vec.end();++ite,++i)
{
char *p=new char [(*ite).size()+1];//创建字符数组
strcpy(p,(*ite).c_str());
ptr[i]=p;//将字符数组指针插入到字符指针数组中
}

//vector对象中的元素输出
cout<<"The output of vector:"<<endl;
for(vector<string>::iterator ite=vec.begin();ite!=vec.end();++ite)
cout<<*ite<<' ';
cout<<endl;

//输出字符数组中的内容
cout<<"The output of char array:"<<endl;
for(i=0;i!=vec.size();++i)
cout<<ptr[i]<<' ';
cout<<endl;

//释放各个字符数组
for(i=0;i!=vec.size();++i)
delete []ptr[i];//动态分配内存,使用完,一定要释放!

//释放字符指针数组
delete []ptr;
return 0;
}
3.运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐