读入一组string类型的数据,并将它们存储在vector中。 接着,把该vector对象复制给一个字符指针数组。 为vector中的每个元素创建一个新的字符数组, 并把该vector元素的数据复制到相应的字符数组中, 最后把指向该数组的指针插入字符指针数组。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> svec;
string str;
// 输入vector元素
cout << "Enter strings:(Ctrl+Z to end)" << endl;
while (cin >> str)
svec.push_back(str);
// 创建字符指针数组
char **parr = new char*[svec.size()];
size_t ix = 0;
for(vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter, ++ix) {
// 创建字符数组
char *p = new char[(*iter).size()+1];
// 复制vector元素的数据到字符数组
strcmp(p,(*iter).c_str());
// 将指向该字符数组的指针插入到字符指针数组
parr[ix] = p;
}
//输出这些指针数组中的元素
for(ix = 0; ix != svec.size(); ++ix)
cout << parr[ix] << endl;
// 释放各个字符数组
for(ix = 0; ix != svec.size(); ++ix)
delete [] parr[ix];
delete [] parr;
system("pause");
return 0;
}
输出结果:
不知哪位大侠可以帮我解释一下,为什么输出的结果是乱码?我做过测试,vector对象中的元素,可以正常输出,但是要字符指针数组输出的结果就乱码了?
小生在这里谢谢各位了。
strcmp(p,(*iter).c_str());这是字符串比较,不是字符串复制。请使用strcpy。