我在wince下将CString字符串转换成char*,试了网上的好多方法都不成功,下面是我编译通过的,但是结果不对啊!
CEdit *pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1);
CEdit *pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2);
CEdit *pEdit3 = (CEdit*)GetDlgItem(IDC_EDIT3);
CString str1;
CString str2;
CString str3;
char * szValue1;
char * szValue2;
pEdit1- >GetWindowText(str1);
pEdit2- >GetWindowTextW(str2);
szValue1=(LPSTR)(LPCTSTR)str1;
szValue2=(LPSTR)(LPCTSTR)str2;
float fstr1 =atof(szValue1);
float fstr2 =atof(szValue2);
float sum=fstr1*fstr2;
CString str;
str.Format(L"%f",sum);
pEdit3- >SetWindowText(str);
程序实现的功能很简单,就是把两个编辑框的内容读过来,转化成浮点型的相乘后再转换成CString后,通过编辑框显示。但是通过程序结果看只能运行1位数的乘法,比如14×12结果就变成了1×1后面的4,2都丢了,通过debug看好像是在szValue1=(LPSTR)(LPCTSTR)str1这个地方转换的是出了错。可能转换后就变成一个字符了,这个转换不是char*吗,怎么就变成char呢?
请达人指点下,谢谢了!
"pEdit1- >GetWindowText(str1);
pEdit2- >GetWindowTextW(str2);
szValue1=(LPSTR)(LPCTSTR)str1;
szValue2=(LPSTR)(LPCTSTR)str2;
"
建议你不要这样获取值.
直接在ClassWizard上定义控件变量吧,那样还可以指定类型,要不然你这样指定转换,值可能已经乱了.
貌似我也碰到这个问题,取出来只是第一个字母,期待达人解决
TCHAR类型的也能直接转为浮点型的啊,何必呢
wcstod
qfeng168 是在什么情况下仅读出一个字母的?
贴点代码看下.
我前段时间做进程间通信,传一个字符串过来的,读过来就是首字母,后来改成Char数组就可以了
我是读取注册表值,读出来转成cstring,但只能取到第一个字母
RegQueryValueEx(hkey, _T("DefaultPrinter"), NULL, &dwtype, keyvalue, &cbData);
CString str_keyvalue = CString(keyvalue)
str_keyvalue只有字符串的第一个字母
LZ的意思是str_keyvalue改成char str_keyvalue[MAX_PATH]?