C++:如何复制标准::字符串*
C++ : how to duplicate std::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"
如果您确实必须使用指针和动态分配(很可能不是),那么
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"
相关文章:
- 并行标准::复制复杂性
- 如何将字符*浅复制到标准::字符串?
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 从标准容器重新绑定和复制分配器
- C 标准:通过复制返回以初始化无RVO的参考:是否有任何副本
- 标准::列表转换和复制
- 复制省略用于列表初始化,它在标准中在哪里说明?
- 标准::复制构造函数中的字符串行为
- 使用标准库根据一个数组对两个数组进行排序(避免复制步骤)
- 了解标准::复制
- 标准::复制失败,"cannot seek vector iterator after end"
- 非复制标准::shared_ptr<提升::任何>?
- C++标准是否允许复制任意多态数据结构?
- 提升::可选与标准::不可复制对象的可选
- 标准::atomic_应该如何...<std::shared_ptr>用于线程安全类的复制和移动操作?
- 是否有标准算法要复制直到
- 将内存复制到标准::复制
- 移动分配与标准复制和交换不兼容
- 标准::复制二维数组
- C++,标准::复制和模板