这次一定要把这个有关问题搞懂
这次一定要把这个问题搞懂如下代码,运行时为什么会出错,说是某个断言失败,而且这个错误我理解不了。代码如
这次一定要把这个问题搞懂
如下代码,运行时为什么会出错,说是某个断言失败,而且这个错误我理解不了。
代码如下:
C/C++ code CString a("world"); TCHAR b[50] = L"hello"; wcscat_s(b, a.GetLength(), a.GetBuffer());
错误如下:
Expression:(L"String is not null terminated" && 0)
[解决办法]看看是否定义了_UNICODE宏?
"world"也改为L"world"试试
[解决办法]代码里,有的是宽字符版本的(如,wcscat_s和L),而有的是根据设置对应宽窄字符(CString,TCHAR)。
建议你用同一套版本。
对第二个参数的名字是sizeInWords,但实际上还是要传多少bytes,记得加上最后\0的空间。
wcscat_s(b, sizeof(wchar_t)*(a.GetLength()+1), a.GetBuffer());
[解决办法]这是MSDN上的解释:注意看黑体字
Parameters
strDestination
Null-terminated
destination string buffer.
numberOfElements
Size of the
destination string buffer.
strSource
Null-terminated source string buffer.
[解决办法]第二个参数应该是目的字符串的缓冲区的长度。
所以必须要>原字符长长度和新加入字符串长度。
改成
CString a("world");
TCHAR b[50] = L"hello";
wcscat_s(b, 50,a.GetBuffer());
[解决办法]没看懂,你们在讨论什么?
wcscat_s的第二个参数应该传递什么?