是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?相关的知识,希望对你有一定的参考价值。

const char* s = std::string("text").c_str();
std::cout << s << std::endl; //This will print nothing because the data
                             //isn't available any longer

std::string::c_str()返回指向其存储数据的指针。考虑到std::string("text")在我使用它的时候才可用(例如,当我用它来初始化另一个实例时),所以最后调用析构函数来删除数据,这反过来使s指向任何东西。

现在我的问题是,是否存在保持原始数据存活的本机(独立于库)方法。或者它是否可能使用像共享智能指针这样的东西,它知道其他东西是否指向std::string的数据,所以它还没有被删除。

答案

不能使字符串在内部使用引用计数指针。如果您希望使用指向其数据的指针,则必须确保该字符串存活。唯一的选择是将数据复制/移动到另一个字符串对象中。

以上是关于是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将图像保存在本地的情况下将捕获的图像(Surface View)传递给另一个片段?

生成pdf而不将其保存到磁盘然后将其显示给浏览器

如何在不将其注册为机器人的情况下创建不和谐机器人?

如何在不将密码保存在数据库中的情况下验证用户身份

如何在不将其备份到 iCloud 的情况下为我的应用程序提供演示数据?

直接将文件上传到SFTP而不将其存储到本地系统[重复]