为什么同是QString转换为float,一个成功一个失败呢?

sichuanwww 2016-05-20 07:56:02
 QByteArray data;
QDataStream out(&data,QIODevice::ReadWrite);
out<<"data22"<<"12.36"<<"dddd"<<"44";

QStringList strList;

QList<QByteArray> dd= data.split('\0');

for(int i=0;i<dd.count();i++)
if(dd[i].count()>0)
strList.append(QString(dd[i]));


bool ok;

QString mm="12.36";
QString nn=QString(strList[1]); //这个也应该是“12.36”

qDebug()<<mm;
qDebug()<<nn;


float x=0;
float y=0;

//为什么 mm可以转换为浮点数 ,而nn转换就出错了呢??
x=nn.toFloat(&ok);
qDebug()<<x;
qDebug()<<ok;


ok=false;
y=mm.toFloat(&ok);
qDebug()<<y;
qDebug()<<ok;

//-----------



输出结果为:

"12.36"
"12.36"
0
false
12.36
true
...全文
542 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzh9619 2016-10-24
  • 打赏
  • 举报
回复
楼主解决这个问题了吗?我也遇到了。谢谢楼主
草上爬 2016-05-24
  • 打赏
  • 举报
回复
#include <QCoreApplication> #include <QByteArray> #include <QDataStream> #include <QList> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QByteArray data; QDataStream out(&data,QIODevice::ReadWrite); out<<"data22"<<"12.36"<<"dddd"<<"44"; QStringList strList; QList<QByteArray> dd= data.split('\0'); for(int i=0;i<dd.count();i++) if(dd[i].count()>0) strList.append(QString(dd[i])); bool ok; QString mm="12.36"; QString nn=QString(strList[1]); //这个也应该是“12.36” qDebug()<<mm; qDebug()<<nn; float x=0; float y=0; //为什么 mm可以转换为浮点数 ,而nn转换就出错了呢?? x=nn.toFloat(&ok); qDebug()<<x; qDebug()<<ok; ok=false; y=mm.toFloat(&ok); qDebug()<<y; qDebug()<<ok; return a.exec(); }
草上爬 2016-05-24
  • 打赏
  • 举报
回复

结果明明是这样的
sichuanwww 2016-05-21
  • 打赏
  • 举报
回复
其实,我需要的是把取出的数字字符串转换为浮点数,结果总是0. 哪位指点一下迷津!
sichuanwww 2016-05-21
  • 打赏
  • 举报
回复
引用 1 楼 dext 的回复:
你 qDebug() << strList; 就知道了,是因为 你对 Qt QString 是如何储存的不太清楚才会有 QList<QByteArray> dd = data.split('\0'); 的问题
刚入手Qt,那你知道如何拆分QByteArray的数据呢?
sichuanwww 2016-05-21
  • 打赏
  • 举报
回复
我就是需要把QByteArray的数据分离后,转换成浮点数。哪位指点一下迷津!
dext 2016-05-20
  • 打赏
  • 举报
回复
你 qDebug() << strList; 就知道了,是因为 你对 Qt QString 是如何储存的不太清楚才会有 QList<QByteArray> dd = data.split('\0'); 的问题

16,199

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧