在C ++中连接两个宽字符串的最快和/或最安全的方法?

时间:2019-06-26 20:05:20

标签: c++ string concatenation concat string-concatenation

以下宽字符串串联方法之一是否比另一个更快速和/或更安全?

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

还是有一种更快/更安全的方法?

在这些方面,最好的选择是:

  • 速度
  • 安全性

1 个答案:

答案 0 :(得分:4)

示例不正确。 例如,在您的wcscat版本中,没有额外的内存分配,因此它的速度将达到前所未有的速度。

+=上进行std::wstring时,速度主要取决于std::wstring是否必须重新分配。

因此,您的问题减少到内存分配问题。如果已经分配了内存,则wstring的性能应达到所需的速度。

另一个问题是其他人已经注意到了,您想要合理的速度和最大的安全性。如果计划太多的串联,并且探查器显示出严重的速度问题,则可以实现自己的分配器。