错误1
当想要截取并复制一段字符时
CString cmdas;
long length = 10;
wchar_t *accname = new wchar_t[length+1];
wcscpy_s(accname, length+1, cmdas.GetBuffer(cmdas.GetLength()); //Erorr: Buffer is too small
解决
CString cmdas;
long length = 10;
wchar_t *accname = new wchar_t[length+1];
wcscpy_s(accname, length+1, cmdas.GetBuffer(length); //复制截取片段
或者是
CString cmdas;
long length = 10;
wchar_t *accname = new wchar_t[length];
wcscpy_s(accname, length, cmdas.GetBuffer(length-1); //复制截取片段
错误2
当想要截取并复制一段字符时
const wchar_t source* = L"Hello";
long length = 10;
wchar_t *accname = new wchar_t[length];
wcscpy_s(accname, length, source); //Erorr: Buffer is too small
解决
const wchar_t source* = L"Hello";
long length = 10;
wchar_t *accname = new wchar_t[length+1];
wcscpy_s(accname, length+1, source); //记得+1 ,还要复制'\0'
总结
类似报错函数:
strcpy
strcpy_s
wcscpy
wcscpy_s
报错原因:
函数规定,要复制到的数组的长度必须大于等于源数组的长度;
千万别忘记 +1 ,还要保存’\0’
如果要截取一部分字符并复制,请先截取后再复制.