wcscpy()即为strcpy()的宽字符版本(Unicode),与_T类似的,Visual C++提供了类似的同名函数:
#ifdef UNICODE
#define _tcscpy wcscpy
#else
#define _tcscpy strcpy
#endif
wcscpy_s的作用和前面一样,不过是MS搞出来的带有安全机制的,更安全的版本。。。
为什么有时候在调用wcscpy的时候会出现不安全现象呢?
是因为有可能由于程序员的不正确使用,导致缓冲区的泄露,或者造成内存数据读取错误等现象,
所以推荐使用unicode版的_s的函数版本wcscpy_s(*dest,wcslen(src),*src);
这样读取的数据就能保证数据的正确性
wcscpy_s的函数原型为:
error_t wcscpy_s(wchar_t *strDestination,size_t numberOfCharacters,const wchar_t *strSource);
其中strDestination为指向将要复制字符串的目的缓冲区的地址,numberOfCharacters为缓冲区大小(以字符计),strSource为指向源字符串的指针
下面是一个例子:
1 PCWSTR string = TEXT("mydef");
2 WCHAR buff[6];
3 wcscpy_s(buff, _countof(buff), string);
其中TEXT是一个宏,该宏能够自动判断当前字符集环境(Unicode还是ANSI还是其他的)并进行适当的转换。
与其类似的还有以下函数:
error_t wcscat_s(wchar_t *strDestination,size_t numberOfCharacters,const wchar_t *strSource)