C++:如何复制std :: string*

Jér*_*yet 8 c++ string

我怎样才能在c ++中复制一个std :: string*?

我想做那样的事情:

std::string *str1 = new std::string("test");
std::string *str2 = strdup(str1);

delete str1;

std::cout << *str2 << std::endl; // result = "test"
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 24

如果你真的必须使用指针和动态分配(很可能不是),那么

std::string *str2 = new std::string(*str1);
Run Code Online (Sandbox Code Playgroud)

在真实生活中,

std::string str1 = "test";
std::string str2 = str1;
Run Code Online (Sandbox Code Playgroud)


Dav*_*nan 5

我很确定您不应该在这里使用指针。使用指针会强制您管理生存期,防止出现异常情况等。一个不必要的痛苦世界。

您应该编写的代码是:

std::string str1 = "test";
std::string str2 = str1;
Run Code Online (Sandbox Code Playgroud)