#include <iostream>
#include <Windows.h>
using namespace std;
wchar_t * __cdecl sb_wcscpy(wchar_t * dst, const wchar_t * src)
{
wchar_t * cp = dst;
while( *cp++ = *src++ )
; /* Copy src over dst */
return( dst );
}
int main()
{
WCHAR* lpszKeyName = L"\\Registery\\Machine\\Software\\Trinity&Sunny";
INT_PTR length1 = wcslen(L"\\Registery\\Machine\\Software");
if(!_wcsnicmp(lpszKeyName, L"\\Registery\\Machine\\Software", length1))
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
sb_wcscpy(lpszKeyName+length1, L"\\Sunny");
cout<<lpszKeyName<<endl;
}
这个问题以前遇到过好几次,都没有总结,今天又遇到了。
WCHAR* lpszKeyName = L"\\Registery\\Machine\\Software\\Trinity&Sunny"; 这句话的意思是让一个指针指向一个常量字符串。一定不要认为为这个指针分配了内存空间然后这个空间里面存放了这个字符串。两者的区别就是常量是不能被修改的,如果后面利用lpszKeyName来修改里面的值是不合法的~~~所以程序会崩溃