以下宽字符串串联方法之一是否比另一个更快速和/或更安全?
1)std :: wstring
WCHAR buf[128];
LPCWSTR str1 = L"string 1,";
LPCWSTR str2 = L"string 2";
wcscpy_s(buf, str1);
wcscat_s(buf, str2);
LPCWSTR result = buf;
2)wcscpy_s,wcscat_s
WCHAR buf[128];
LPCWSTR str1 = L"string 1,";
LPCWSTR str2 = L"string 2";
_snwprintf_s(buf, _TRUNCATE, L"%s%s", str1, str2);
LPCWSTR result = buf;
3)_snwprintf_s
sheets/data/rowData/values
还是有一种更快/更安全的方法?
在这些方面,最好的选择是:
答案 0 :(得分:4)
示例不正确。
例如,在您的wcscat
版本中,没有额外的内存分配,因此它的速度将达到前所未有的速度。
在+=
上进行std::wstring
时,速度主要取决于std::wstring
是否必须重新分配。
因此,您的问题减少到内存分配问题。如果已经分配了内存,则wstring
的性能应达到所需的速度。
另一个问题是其他人已经注意到了,您想要合理的速度和最大的安全性。如果计划太多的串联,并且探查器显示出严重的速度问题,则可以实现自己的分配器。