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 為單位.