c++复制字符串,使用wcsncpy_s API可以安全的达到复制字符串的要求,这里我讲解多种调用wcsncpy_s的方式。
首先来看一下wcsnpy_s API的参数。
//参数1:指向要复制到的宽字符数组的指针
//参数2:目标缓冲区的大小
//参数3:指向复制来源的宽字符串的指针
//参数4:要复制的最大宽字符数,减一获取空字符截断
errno_t wcsncpy_s(wchar_t *restrict dest, rsize_t destsz, const wchar_t *restrict src, rsize_t n);
首先我们来使用微软的ARRAYSIZE计算数组的长度,这个宏定义在微软的<winnt.h>文件中,包含了#include <Windows.h>文件也就包含了<winnt.h>文件。
代码如下:
wcsncpy_s(targetString, ARRAYSIZE(targetString), srcString, ARRAYSIZE(targetString) - 1);//微软api风格
然后我们来使用VC++进行开发常用的_countof宏来计算数组长度
代码如下:
wcsncpy_s(targetString, _countof(targetString), srcString, _countof(targetString) - 1);//微软api风格
然后我们来使用当前(2018年)c++官方文档推荐的方法。