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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cnd2449294059/article/details/72834510

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.运行结果



展开阅读全文

没有更多推荐了,返回首页