通过指针向量迭代并打印输出值?

时间:2016-04-24 16:57:19

标签: c++

我有一些firstname_list是指针的向量(数据类型字符串)的东西。所以它看起来像vector <string*> firstname_list;。在此内部,存储字符串的地址。如果我尝试做这样的事情:

cout << *(firstname_list[0]);

它会取消引用地址并给我我需要的字符串。

但是,我尝试使用迭代器创建一个循环,我在这个网站上读过,我试过这个:

vector<string*>::iterator iter;
for (iter = firstname_list.begin(); iter != firstname_list.end(); ++iter)
    cout << *(firstname_array[iter]);

但是,现在它不会打印而是会出错:

error C2679: binary '[' : no operator found which takes a right-hand operand of type 

'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<std::basic_string<cha

r,std::char_traits<char>,std::allocator<char>> *>>>' (or there is no acceptable conversion)

我已经看过其他与此相似的线程,人们会问如何迭代循环,但我仍然无法弄明白。任何有关我收到此消息的帮助都表示赞赏!

1 个答案:

答案 0 :(得分:5)

好吧,如果你正在使用C ++ 11,那么你很幸运。

for (const auto& str: firstname_list)
    std::cout << *str << std::endl;

否则:

vector<string*>::iterator iter;
for (iter = firstname_list.begin(); iter != firstname_list.end(); ++iter)
    std::cout << **iter;

注意:如评论中所述,您必须取消引用迭代器两次。如果它指向char *,则单个星号就可以了。