编写程序读入一组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.运行结果
编写程序读入一组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.运行结果
相关文章推荐
- 8.9 编写函数打开文件用于输入,将文件内容读入 string 类型的 vector 容器,每一行存储为该容器对象 的一个元素。8.10 重写上面的程序,把文件中的每个单词存储为 容器的一个元素
- 编写程序从标准输入设备读入的元素数据建立一个int型vector对象,然后动态创建与该vector大小一致的数组,把vector对象的所有元素复制给该数组
- 用string类型的vector对象创建一个字符指针数组
- 编写程序定义一个vector 对象,其每个元素都是指向string 类型的指针,读 取该vector 对象,输出每个string 的内容及其相应的长度。
- 编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按
- 通过编写一个程序,来说明字符数组 以及操作字符数组的函数的用法。该程序读入一组文本行,并把最长的文本行打印出来。
- 编写一个pair存入一组string,int类型数据,并保持到vector中
- 编写程序STUDENT *Create(STUDENT studs[],int n)。STUDENT是一个结构类型,包含姓名、成绩和指针域。studs数组中存储了n个STUDENT记录。create函
- 编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按下回车键时会产生换行符(/n)
- 编写一段程序,将含有整数元素的vector对象复制给一个整形数组;
- 《c primer pius》第六章第14题,发现网上好多都有问题,编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中
- 读入一组整数并将它们存入一个vector对象,将每个相邻整数的和输出出来。
- 编写一个程序,从标准输入读入字符,并把它们写出在标准输出中。 所有非字母字符都完全按照它的输入形式输出,字母字符在输出前进行加密
- 编写一个程序把一个单词读入一个字符数组,然后反向打印出这个词。
- 编写一个程序 把八个整数读入一个数组中 然后以相反的顺序打印它们
- 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词。程序应该找出满足一下条件的单词:该单词的后面紧接着再次出现自己本身。跟踪重复次数最多的单词及其重复次数,输出.
- 九宫格 Swift提供经典的数组和字典两种集合类型来存储集合数据,使用数组实现一个九宫格程序,
- 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词。程序应该找出满足一下条件的单词:该单词的后面紧接着再次出现自己本身。跟踪重复次数最多的单词及其重复次数,输出.
- 把vector中的string对象导入到字符指针数组中
- 打印不同的数(编写一个程序,使用指针访问数组方式,读入十个数,输出其中不同的数,即一个数如果出现多次,只打印一次)