• 7286阅读
  • 4回复

目标机上QString转换成float出问题:((结贴) [复制链接]

上一主题 下一主题
离线onebyte
 

只看楼主 倒序阅读 楼主  发表于: 2006-10-10
我在程序中用 了二种方法从QString转换成float
(1)float xx=(leXX->text()).toFloat();
(2)char *pXX=new char[20];
      strcpy(pXX,leXX->text());
      float xx=atof(pXX);
上面程序中leXX是QLineEdit的指针。而所指的QLineEdit用于输入xx的值。
另外我用gdb远程调试时看过leXX->text()的返回值,是输入时的数据。:(

该段程序在宿主机上不论用QT库还是QTE库,都运行正常。但移植到目标机上(SBC-2410)后,无论输入什么数,最后结果都是0;

而且在移植到目标机后对于语句:QString str=QString::number(xx,'f',2);(无论xx是什么数字)。都会引起段错误。(上述程序在宿主机上运行均正常)

我用的是QTE3.3.4的库。实在不清楚为什么会出现以上问题,我应该怎样着手查出相应的错误呢?(太奇怪的毛病了:()
[ 此贴被onebyte在2006-10-17 17:15重新编辑 ]
离线onebyte

只看该作者 1楼 发表于: 2006-10-11
我通过下面的小程序进行了测试
#include <stdio.h>
#include <stdlib.h>

int
main ( int argc, char *argv[] )
{
    char *xx="0.9";
    double aa=atof(xx);
    printf("aa=%lf\n",aa);
    double bb=0.9;
    printf("bb=%lf\n",bb);

    return 0;
}            

如果 aa 定义为float型,则在目标机上运行会出现非法命令错误。illegal instruction
但如果我用double,则最后输出为
aa=0.000000
bb=0.900000

请问这种情况是不是说明我的系统库存在问题?
我应该怎样解决这类错误:(
搞了两天了,还没有办法。真是郁闷:(
离线onebyte

只看该作者 2楼 发表于: 2006-10-17
我把系统库换掉了,然后一切正常了:)
离线wjydlut

只看该作者 3楼 发表于: 2006-11-01
你好 !我也遇到同样的错误 ,请问所说的换系统库是指换那些库呀 ? 谢谢 !
离线xuxinshao

只看该作者 4楼 发表于: 2007-08-22
onebye有空讲下替换了那些库啊?
快速回复
限100 字节
 
上一个 下一个