这是我的代码:
char cName[20] = {0};
int iSum = 0;
int k=0;
k=GetDlgItemText(IDC_EName,LPTSTR(cName),11);
k=_tcslen((wchar_t*)cName);
for(unsigned int i=0;i<=k;i++)
iSum+=cName[i]-1;
m_sSerial.Format(_T("%i"), iSum);
SetDlgItemText(IDC_ESerial, (LPCTSTR)m_sSerial);
我在MSVC 6和MSVC 2008中尝试了这两个(当然最近这个) 但是
MSVC 6 reult = 308
and MSVC 2008 result =241.
input of both =MSVC
怎么了? 为什么我有两个不同的答案以及如何在MSVC2008中修复它?
答案 0 :(得分:0)
不要做强有力的类型转换。删除所有LPTSTR
,LPCTSTR
,(wchar_t*)
类型转换。将cName
声明为:
TCHAR cName[20] = {0};
这将确保cName
为WCHAR
用于Unicode构建,GetDlgItemTextW
用于Unicode构建,cName
为char
用于MBCS构建和GetDlgItemTextA
{1}}被调用。