将对象推送到shared_ptr <string_view>队列中的错误

问题描述

在这代码中,除了主要功能外,我还创建了2个功能一个将对象推入队列, 另一个获取用户输入并将其作为shared pointer<string_view>.

添加到队列中

在尝试打印添加到队列中的用户输入时,它不会打印任何内容。 问题是,当您按shared_ptr<string_view>("Hello World!")而不是用户输入时,它会打印"Hello World!"

我确实了解(或认为我知道),这与“ Hello World!”这一事实有关。是临时的,而缓冲区变量是本地的-但我不知道该如何解决....

#include <string_view>
#include <iostream>
#include <queue>
#include <memory>

using namespace std;

void addToQueue(queue<shared_ptr<string_view>> &queue,shared_ptr<string_view> object ) {
    queue.push(object);
}

void readInput(queue<shared_ptr<string_view>> &queue) {
    string buffer;
    //get user input
    cin >> buffer;

    // When changing this row to
    // addToQueue(make_shared<string_view>("Hello World!"));
    //"Hello World!" will be printed
    addToQueue(queue,make_shared<string_view>(buffer)); 
}

int main() {
    queue<shared_ptr<string_view>> queue;
    readInput(queue);
    cout << *queue.front().get() << endl;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)