2017-01-21 4 views
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 Нажмите любую клавишу для продолжения. , ,

Я не могу найти свою ошибку .. или я что-то не понял? Помогите!

ответ

1

Вы печатаете указатель в контейнере.

Вам нужно одно разыменование для итератора, а другое одно для указателя на строковый объект.

+0

хаха спасибо !! Это первый раз, когда я вижу такой шаблон – JJChai

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; 
} 
Смежные вопросы