一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

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)

 

posted on 2022-09-15 10:40  一杯清酒邀明月  阅读(1075)  评论(0编辑  收藏  举报