vector<char*> push_back值不变

img

img

vector<char*> v2里面的char*的值始终是最后一次的值,但是用string是可以保存所有push_back的值,没明白什么原因

vector <char *>v2时,v2.push_back(vc)的意思就是将vc的值,即用来存放最后一次字符串值的首地址放入v2;
vector <string>v2时,v2.push_back(vc)的意思就是将vc指向的char*字符串构造成一个临时string,放入v2;

在遍历的时候,123行的char vc[xx] 所在的内存地址是不变的。你每次v2.pushback的都是同一个内存地址,那么vc的值(*vc)就是最后一次赋值的内容。
而string保存的是具体的字符串的值而不是指针(字符串的值没有保存在栈空间而是放在专门的字符串内存区。)

img


感谢楼上两位回答,每次重新new一个对象,看起来可以解决了