Visual c++ 如何重置/清空std::wstring?
如何重置/清空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 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*
和字符串的大小,允许它事先知道确切的缓冲区大小
但是,与性能问题一样,您需要使用探查器进行测量。猜测不会让你走远