|
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()];
// 处理vector元素
size_t ix = 0;
for (vector<string>::iterator iter = svec.begin();
iter != svec.end(); ++iter, ++ix) {
// 创建字符数组
char *p = new char[(*iter).size()+1];//string类型支持.size()方法
// 复制vector元素的数据到字符数组
strcpy(p, (*iter).c_str());
// 将指向该字符数组的指针插入到字符指针数组
parr[ix] = p;
}
// 输出vector对象的内容
cout << "Content of vector:" << endl;
for (vector<string>::iterator iter2 = svec.begin();
iter2 != svec.end(); ++iter2)
cout << *iter2 << endl;//迭代器输出时候需要解引用
// 输出字符数组的内容
cout << "Content of character arrays:" << endl;
for (ix =0; ix != svec.size(); ++ix)
cout << parr[ix] << endl;//???输出一个指针即输出这个指针所指的内容???????
// 释放各个字符数组
for (ix =0; ix != svec.size(); ++ix)
delete [] parr[ix];
// 释放字符指针数组
delete [] parr;
return 0;
}
代码如上,划问号的地方是问题,如果我输入的字符串为:a,b,c,CtrlZ,然后输出Content of character arrays的时候输出的是parr[ix],它应该是一个指针阿……但VS2005下输出的是a,b,c,而且如果把代码改成*parr[ix]的话还是输出a,b,c,十分不理解,第一次输出应该是一个指针,不应该是字符串阿?达人求解 |
|