【发布时间】:2014-08-24 04:02:03
【问题描述】:
那里。 我现在正在学习 C++ Primer。当我写一段程序时,关于指针的东西让我很困惑。 下面程序的功能是将字符串读入向量并将向量复制到字符指针数组中。对于向量中的每个元素,分配一个新的字符数组并将向量元素中的数据复制到该字符数组中。然后打印字符串数组的内容。
这是我的一段代码:
vector<string> str_vector;
string str_temp;
while(getline(cin,str_temp)){
str_vector.push_back(str_temp);
}
typedef const char *cptr;
cptr *cptr_array = new cptr[str_vector.size()];
cptr *p = cptr_array;
for(vector<string>::iterator iter = str_vector.begin();
iter != str_vector.end(); iter++,p++){
*p = (*iter).c_str();
}
cout<<"Output Char Array Element"<<endl;
cptr *q = cptr_array;
while(*q){
cout<<*q<<endl;
q++;
}
delete [] cptr_array;
当我运行程序时,它会在输出字符串数组后崩溃。 我可以使用下面的代码来做同样的事情而不会崩溃。
cptr *q = cptr_array;
for(int i = 0; i < str_vector.size(); i++,q++){
cout<<*q<<endl;
}
我只是想知道为什么上面的输出代码不能正常工作。非常感谢大家!
【问题讨论】:
标签: c++ arrays string pointers vector