当前位置:  开发笔记 > 编程语言 > 正文

以安全的方式从char*创建std :: string

如何解决《以安全的方式从char*创建std::string》经验,为你挑选了1个好方法。

我有一个char* p,指向一个\0终止字符串.如何string以异常安全的方式从中创建C++ ?

这是一个不安全的版本:

string foo()
{
  char *p = get_string();

  string str( p );
  free( p );
  return str;
}

一个明显的解决方案是尝试捕获 - 任何更简单的方法?



1> Chris Jester..:

您可以使用shared_ptr从C++ 11或升压:

string
foo()
{
    shared_ptr p(get_string(), &free);
    string str(p.get());
    return str;
}

它使用了非常具体的功能shared_ptr不在可用的auto_ptr或其他任何东西,即指定一个定制删除的能力; 在这种情况下,我free用作删除器.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有