C++:如何复制标准::字符串*

C++ : how to duplicate std::string *

本文关键字:标准 复制 字符串 何复制 C++      更新时间:2023-10-16

c++ 中,我如何复制 std::string * ?

我想做这样的事情:

std::string *str1 = new std::string("test");
std::string *str2 = strdup(str1);
delete str1;
std::cout << *str2 << std::endl; // result = "test"

如果您确实必须使用指针和动态分配(很可能不是),那么

std::string *str2 = new std::string(*str1);

在现实生活中,

std::string str1 = "test";
std::string str2 = str1;

我很确定你不应该在这里使用指针。使用指针强制您管理生存期、防止异常等。一个充满无谓痛苦的世界。

你应该写的代码是:

std::string str1 = "test";
std::string str2 = str1;

你只是做

std::string *str2 = new std::string(*str1);

但我必须问你为什么首先使用指针。怎么了

std::string str1 = "test";
std::string str2 = str1;

您可以更轻松地执行操作,而无需调用 new 和 delete。例如

std::string *str1 = new std::string("test");
std::string *str2 = str1;
std::cout << *str2 << std::endl; // result = "test"

至少在您的示例中,如果有可能在删除 str1 后访问它,最好写

std::string *str1 = new std::string("test");
std::string *str2 = new std::string( *str1 );
delete str1;
str1 = nullptr;
std::cout << *str2 << std::endl; // result = "test"