我想完成的任務(wù):
對(duì)于一個(gè)字符串 LPCTSTR sourceCode
根據(jù)某些符合條件的字串subStr拷貝到一個(gè)新的字符串中。
使用安全的拷貝函數(shù):_tcscpy_s實(shí)際是一個(gè)宏,根據(jù)是多字節(jié)編碼或者是Unicode編碼而調(diào)用不同的函數(shù)。
在tchar.h中我們可以找到:
#ifdef _UNICODE
.......
#define _tcscpy_s wcscpy_s
.......
#else
....
#define _tcscpy_s strcpy_s
...
#endif
原型:
_Check_return_wat_ _CRTIMP_ALTERNATIVE errno_t __cdecl wcscpy_s(_Out_z_cap_(_DstSize) wchar_t * _Dst, _In_ rsize_t _DstSize, _In_z_ const wchar_t * _Src);
使用:
wcscpy_s(dest,count,src);
src不得多于count-1個(gè)字符;
該函數(shù)最多將count-1個(gè)字符從src拷貝到dest中,然后在會(huì)在dest的字符串后面自動(dòng)的加上'\0'
其中count是字符數(shù),而不是字節(jié)數(shù)。
解析memcpy
使用 void* memcpy(void* dest , const void* src, size_t count);
特別注意這里的count指的是字節(jié)數(shù)。
當(dāng)source中的字符數(shù)<count時(shí)memcpy會(huì)在將count后面全部清零。
但是允許拷貝count*sizeof(TCHAR)