StringCbCat和StringCchCat API之间有什么区别

时间:2014-07-29 05:01:16

标签: c++ winapi visual-c++

StringCbCat:http://msdn.microsoft.com/en-us/library/windows/desktop/ms647495%28v=vs.85%29.aspx StringCchCat:http://msdn.microsoft.com/en-us/library/windows/desktop/ms647518%28v=vs.85%29.aspx

目前我正在编写一个C ++程序来处理TCHAR字符串。我发现这两个Windows API,一个是StringCbCat,另一个是StringCchCat。它们似乎都能够为TCHAR字符串执行strcat()函数。但如果它们是相同的,为什么给它们两个不同的名字呢?我试过谷歌但没有运气。

任何人都知道是否有任何区别?或者他们是一样的?

PS。其他StringCbxxx和StringCchxxx函数也是如此,例如StringCbLength和StringCchLength

1 个答案:

答案 0 :(得分:10)

StringCbCat ::

  

cbDest [in]类型:size_t目标缓冲区的大小, in   字节即可。最大数量   允许的字节数为STRSAFE_MAX_CCH * sizeof(TCHAR)。

实施例::

WCHAR wszTemp[10] ;
DWORD dwNumberOfBytes = 10 * sizeof(WCHAR) ;
// 10 * 2 = 20 Bytes. 
// 1 [WCHAR][2] takes 2 Bytes

StringCchCat ::

  

cchDest [in]类型:size_t目标缓冲区的大小, in   字符即可。最大字符数   允许的是STRSAFE_MAX_CCH。

实施例::

WCHAR wszTemp[10] ;
DWORD dwNumberOfCharacters = _countof(wszTemp) ;
// 10 Characters. 
// 1 [WCHAR][2] takes 2 Bytes that defines 1 character in UNICODE.