StringCbCat和StringCchCat API之间有什么区别

Leo*_*eon 3 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

Abh*_*eet 11

StringCbCat ::

cbDest [in]类型:size_t目标缓冲区的大小(以字节为单位).允许的最大字节数为STRSAFE_MAX_CCH*sizeof(TCHAR).

例::

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

StringCchCat ::

cchDest [in]类型:size_t目标缓冲区的大小(以字符为单位).允许的最大字符数为STRSAFE_MAX_CCH.

例::

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