字符串是否在其构造函数中复制数据

在下面的函数(从另一个Stackoverflow帖子中修改)中,我试图使用unique_ptr,以便稍后释放由new分配的内存。

在这里做std::wstring(res.get())是否安全?也就是说,在调用字符串构造函数时是否会复制res,以便如果释放由new分配的内存,返回的值不会成为垃圾?

std::wstring narrow_to_wide_str(const std::string& input) {
    size_t size = input.size() + 1;
    size_t out_size;
    std::unique_ptr<wchar_t[]> res{ new wchar_t[size] };
    mbstowcs_s(&out_size,res.get(),size,input.c_str(),size - 1);
    return std::wstring(res.get());
}
maggii86 回答:字符串是否在其构造函数中复制数据

  

在这里进行std::wstring(res.get())安全吗?

是的

来自std::basic_string::basic_string

  

basic_string(const CharT * s,                 const Allocator&alloc = Allocator());       (5)

     

5)构造内容为并由s 指向的以空终止的字符串的副本初始化的字符串。字符串的长度由第一个空字符确定。如果[s,s + Traits :: length(s))不是有效范围(例如,如果s是空指针),则该行为是不确定的。如果要推导的Allocator类型不符合分配器的条件,则此构造函数不用于类模板参数推导。 (自C ++ 17起)

(强调我的。)

,

是的,这很安全,但是您无需在此处使用指向$("#mapContainer").on("click",".btnCircleDraw",function(){ var circleDrawer = new L.Draw.Circle(map,{ shapeOptions: { color: (must call the color here) } }); circleDrawer.enable(); }); 的指针:

wchar_t[]
本文链接:https://www.f2er.com/3168629.html

大家都在问