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

Why I get address when deferencing begin()?

#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 Press any key to continue . . .

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

您正在打印容器中的指针。

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

它打印 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;
}