如何重置/清空到std :: wstring?

时间:2010-10-28 07:24:29

标签: visual-c++

如何重置/清空到std :: wstring?

在使用这些行时似乎我的功能正在延迟:

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

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

1 个答案:

答案 0 :(得分:0)

你是如何衡量这种延迟的?唯一可靠的方法是通过分析器,分析器也会告诉您如何花费时间。

也就是说,经常分配给字符串(除非字符串可以重用其旧缓冲区或小字符串优化启动)涉及删除旧缓冲区并分配新缓冲区。动态内存很慢。

我不知道_bstr_t,但由于std::wstring只有从另一个std::wstringconst wchar_t*分配的赋值运算符,我认为这是后者。如果是这种情况,字符串不知道它将被分配的字符串的大小,所以如果字符串很大,它可能必须逐步增加其缓冲区,这又涉及分配和释放以及复制字符,所以这可能很贵 您可以尝试使用assign()成员函数而不是赋值运算符。我认为assign()的重载需要const wchar_t*和字符串的大小,使其能够在事先知道确切的缓冲区大小。

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