LPCTSTR和char* 之间的转换,这个问题经常出现。
LPCTSTR是const char*,每次我都是在两者之间进行强转。
但是今天强转出现了问题。
char* buffer = new char[10];
sprintf(buffer, "%02d:%02d", min, sec);
LPCTSTR text = (const char*)buffer;
showText(text);
这样show出来的text的内容一直都是乱码,但是调试的时候看到text里面的内容
和buffer里面的内容是一样的,导致很久都找不出原因。
后来想想,只有在LPCTSTR text = buffer这句赋值上出了问题。
然后改用了
memcpy(text, buffer, sizeof(buffer));
来代替直接赋值,接下来显示就正常了。
但是还是没有明白直接赋值到底哪里出问题了。
网上搜寻了一下有这么一段
char* str1="Test String";
LPCTSTR str2=(LPCTSTR)(LPTSTR)str1;
明天上班再去试一下是否正确有效。