gpt4 book ai didi

c++ - ostream,复制函数打印字符串地址,而不是字符串内容

转载 作者:行者123 更新时间:2023-11-30 01:59:45 25 4
gpt4 key购买 nike

这打印了我的字符串的地址,但不是它的内容,

#include <memory>
#include <string>
#include <list>
#include <iostream>
#include <iterator>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
unique_ptr<list<shared_ptr<string>>> upList (new list<shared_ptr<string>>);
shared_ptr<string> spNation (new string ("India"));
upList->push_back (spNation);
copy (upList->begin(), upList->end(), ostream_iterator<shared_ptr<string>> (cout, "\n "));
return 0;
}

我的问题是:

  1. 什么 ostream_iterator<shared_ptr<string>>将 shared_ptr 或字符串作为其主要对象。
  2. 如何使用这种方法打印实际的字符串内容(即 India)。
  3. 与打印所有节点内容的传统 for 循环相比,这种方法是否更可取。

最佳答案

What ostream_iterator<shared_ptr<string>> is taking shared_ptr or strings as its' prime object.

您已经实例化了 ostream_iterator对于 shared_ptr<string> ,这就是它将尝试输出的内容。

How to print actual string contents (i.e. India) using this approach.

如果出于某种原因你真的想使用共享指针,那么你不能使用copy因为那不会撤消额外的间接级别。要么使用普通循环,要么摆脱不必要的间接访问:

list<string> list;
list.push_back("India");
copy(list.begin(), list.end(), ostream_iterator<string>(cout, "\n "));

当然,如果没有所有箭头、模板、新表达式和伪匈牙利疣,它看起来就不那么令人兴奋了,但是任何试图维护代码的人都不会感谢您添加此类修饰。

Is this approach is preferable over traditional for loop to print all node contents

当它使代码更简单时,它是更可取的。如果没有,那就不是。

关于c++ - ostream,复制函数打印字符串地址,而不是字符串内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15897242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com