如何解决将对象推送到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 举报,一经查实,本站将立刻删除。