关于字符转化问题
求教:做了个计算器程序,想把文本框的控件变量m_value1(CString型)转化为float型,结果运行出来的结果出错,输入12+3,输出4.0000;输入22/2,输出1.0000,也就是说,输入的两位数变成了个位数,请问怎么解决啊?
部分代码如下:
void CCounterDlg::OnPlus()
{
char *p = (LPSTR)(LPCTSTR)m_value1;//这是从网上找的转化方法
a=(float)atol(p);//a是自己设的float变量
this->m_value1="";
UpdateData(false);
act=1;
}
void CCounterDlg::OnEqual()
{
char *p = (LPSTR)(LPCTSTR)m_value1;
float b=(float)atol(p);
float c;
switch(act)
{
case 0:
c=a;break;
case 1:
c=a+b;break;
case 2:
c=a-b;break;
case 3:
c=a*b;break;
case 4:
c=a/b;
}
m_value1.Format(_T("%f"),c);
UpdateData(false);
}
[最优解释]
a=(float)(_wtof(m_value1));
[其他解释]
a=(float)atol(p);//a是自己设的float变量
改成a=atof(p);试试看,我没验证过的
[其他解释]
要学会调试
6个字符串长度