0.计数类
_tcslen:决不能对已分配字符串空间而未初始化的字符串指针使用_tcslen。如:
TCHAR *psz = new TCHAR[10];
assert(_tcslen(psz) == 10);//错误!结果未知!
sizeof:对指针和数组的sizeof结果是不同的.
比如 char sz[]=”hello”;则sizeof(sz) == 6;
而char *psz = new char[100];则sizeof(psz) == 4,也就是一个指针的大小.
但是当数组作为参数传递时,将退化为同类型的指针:
void Func(char sz[100])
{
assert(sizeof(sz)==4);
}
_countof:这是一个计数字符的宏.只适用于静态分配的数组(statically-allocated array).如果作用于指针,C 将会产生错误结果;C++ 将不能通过编译.
1. 复制、连接类
_tcsncpy_s:
第一个参数:TCHAR *strDest, 目标缓存地址. 第二个参数:size_t numberOfElements,目标缓存所能容纳的字符数.对于char类型缓存,它容纳的字符数等同于它的字节数,即:sizeof(buf) == _countof(buf).对于wchar_t类型的缓存,此处应使用_countof进行计数.因为此时sizeof(buf) == 2*_countof(buf). 第三个参数:const char *strSource,源字符串地址 第四个参数:size_t count, 准备从源字符串复制多少个字符到目标缓存.必须保证目标缓存剩余一个字符空间来容纳null,否则此函数调用失败.当此参数为_TRUNCATE时,将复制尽可能多的字符到目标缓存,同时保留一个字符给null.若截断,返回值为 STRUNCATE .参考:
http://msdn.microsoft.com/en-us/library/ms175769.aspx
_tcsncat_s:
2.格式化类
_sntprintf_s:对目标缓存计数以 bytes(对char) 和 words(对wchar_T)为单位.统一用 _countof 计数最好.
_vsntprintf_s:使用va_list动态格式化字符串的类.
3.字符串转换类
wcstombs_s:我草2码B。注意此函数对目标缓存的计数以 bytes 为单位.
mbstowcs_s:码B2我草。此函数对目标缓存的计数以 words 为单位.