【问题标题】:What is the difference between StringCbCat and StringCchCat APIsStringCbCat 和 StringCchCat API 有什么区别
【发布时间】:2014-07-29 05:01:16
【问题描述】:

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

【问题讨论】:

  • 顺便说一句,现在“StrSafe”API 已被弃用,取而代之的是“安全 CRT”,因此您可以使用 strcat_s()。或者更确切地说,您应该使用 wcscat_s(),因为如今 ASCII 和 TCHAR 也被弃用,取而代之的是 UNICODE。对于未实现“安全 CRT”功能的非 Microsoft 平台,StrSafe 仍然很有用。

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


【解决方案1】:

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.

【讨论】:

  • 哦,愚蠢的我,没看出区别。谢谢老兄!
猜你喜欢
  • 2012-03-18
  • 2015-12-08
  • 2017-12-05
  • 1970-01-01
  • 2017-03-04
  • 2014-10-05
  • 1970-01-01
  • 2020-05-28
  • 2012-08-21
相关资源
最近更新 更多