问题描述
在这段代码中,除了主要功能外,我还创建了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 (将#修改为@)