为什么我在引用begin()时得到地址?

时间:2017-01-21 11:37:14

标签: list pointers iterator dereference

#include <list>
#include <string>
#include <iostream>

int main()
{
    std::list<std::string*> *listStr = new std::list<std::string*>();

    listStr->push_back(new std::string("HI"));

    std::cout << *(listStr->begin()) << std::endl;  

    return 0;
}

我想我应该得到HI,但我得到了地址作为输出

  

008A2B10按任意键继续。 。

我无法找到我的错误......或者我误解了什么?

2 个答案:

答案 0 :(得分:1)

您正在容器中打印指针。

你需要一个解引用迭代器,另一个指向字符串对象的指针。

答案 1 :(得分:1)

它打印string *,而不是string

打印string

#include <list>
#include <string>
#include <iostream>

int main()
{
    std::list<std::string> *listStr = new std::list<std::string>();

    listStr->push_back(std::string("HI"));

    std::cout << *(listStr->begin()) << std::endl;  

    return 0;
}