如何将字符串的值赋给std :: unique_ptr <std :: string>?

时间:2015-05-01 18:29:47

标签: c++ string unique-ptr

声明std::unique_ptr<std::string>但未指定它(因此它包含一个std::nullptr) - 如何为其赋值(即我不再希望它保持{{1} }})?这两种方法都没有尝试过。

std::nullptr

其中std::unique_ptr<std::string> my_str_ptr; my_str_ptr = new std::string(another_str_var); // compiler error *my_str_ptr = another_str_var; // runtime error 是先前声明和分配的another_str_var

显然,我对std::string正在做的事情的理解非常不合适......

1 个答案:

答案 0 :(得分:20)

您可以在C ++ 14中使用std::make_unique来创建和移动分配而不使用明确的new,或者必须重复类型名称std::string

my_str_ptr = std::make_unique<std::string>(another_str_var);

你可以reset它,用新的替换托管资源(在你的情况下,虽然没有发生实际的删除)。

my_str_ptr.reset(new std::string(another_str_var));

您可以创建一个新的unique_ptr并将其移动到您的原始版本中,但这总是让我感到麻烦。

my_str_ptr = std::unique_ptr<std::string>{new std::string(another_str_var)};