为什么我在引用 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;
}
#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;
}