Visual c++ 如何重置/清空std::wstring?

Visual c++ 如何重置/清空std::wstring?,visual-c++,Visual C++,如何重置/清空std::wstring 使用这些线路时,我的功能似乎在进行延迟: std::wstring currentUrl; // <--- I declare this as global. currentUrl = _bstr_t(url->bstrVal); std::wstring currentUrl;//bstrVal); 你知道我该如何解决这个问题吗?你是如何测量延迟的?唯一可靠的方法是通过探查器,探查器还将向您显示时间是如何花费的 也就是说,经常分配给字

如何重置/清空std::wstring

使用这些线路时,我的功能似乎在进行延迟:

 std::wstring currentUrl; // <--- I declare this as global.
 currentUrl = _bstr_t(url->bstrVal);
std::wstring currentUrl;//bstrVal);

你知道我该如何解决这个问题吗?

你是如何测量延迟的?唯一可靠的方法是通过探查器,探查器还将向您显示时间是如何花费的

也就是说,经常分配给字符串(除非该字符串可以重用其旧缓冲区或进行小字符串优化)需要删除旧缓冲区并分配新缓冲区。而且动态记忆很慢

我不知道
\bstr\t
,但由于
std::wstring
只有赋值运算符可从另一个
std::wstring
const wchar\t*
进行赋值,我假设这是后者。如果是这种情况,字符串不知道将分配给它的字符串的大小,因此如果字符串较大,它可能必须递增地增加其缓冲区,这同样涉及分配和释放以及复制字符,因此这可能非常昂贵。
您可以尝试使用
assign()
成员函数代替赋值运算符。我认为有一个
assign()
重载,它需要
常量wchar\u t*
和字符串的大小,允许它事先知道确切的缓冲区大小

但是,与性能问题一样,您需要使用探查器进行测量。猜测不会让你走远