您的位置:首页 > 编程语言 > Qt开发

Qt中QString与基本类型的转换问题

2015-04-16 13:44 309 查看
之前写过几篇文章,后来由于部分原因删除掉了,最近刚好希望在Qt方面写一点东西,方便大家查找,也希望大家可以相互关注,多做交流,我会坚持在今后的Qt的工作学习中,不断地更新遇到的技术问题与Qt的一些基础知识。

最近在编程时,遇到了一个问题,大致是一堆float类型的数据,需要转换为QDateTime类型,于是经过查阅文档,发现Qt中的一些基本的数据类型比如int, float, double 转换成QString类型是比较方便的,Qt的API会封装相关的方法,如果反向转换的话,需要自己手动编程。

在由int, float, double 这样的基本数据类型转换为QString的方法大致如下:

以int为例:
int tmp = 125;
QString str_a = QString::number(tmp, 10);             // str_a == "125"   十进制
QString str_b = QString::number(tmp, 16).toUpper();   // str_b == "7D"   十六进制


以float为例,或者:

float tmpNum = 3.1415;
QString str = QString("%1").arg(tmpNum);    // str == "3.1415"


在工作中,上述转换用的不是很多,大多数都是由QString类型转换到基本的数据类型使用的比较多,由于Qt的API有方法,所以用起来很简单,方法大致如下:

以转为float, double为例:
QString str = "3.1415";
float toFloatValue = str.toFloat();               // toFloatValue == 3.1415
double toDoubleValue = str.toDouble();     // toDoubleValue == 3.1415


上面这种方法比较适合与科学计数法的表示:

double value = QString("1234.56e-03").toDouble();  // value == 1.23456


需要注意的是,经常QString的内容转换成对应的基本数据类型是建立在QString的内容正确性的基础上进行的,

假设QString的内容是一个基本数据类型无法识别的情况下会导致转换错误,为了提高程序的健壮性,我们通常会在转换时加一个bool型的变量用于判断转换是否成功,用法如下:
QString str = "HelloQt";
bool ok;
float value = str.toFloat(&ok);  //如果转换失败时 value == 0.0,  并且ok == false;


以转int为例:

Qstring str = "FF";
bool ok;
int dec = str.toInt(&ok, 10);   // dec==255 ; ok==true
int hex = str.toInt(&ok, 16);   // hex==255;  ok==true;


转换为QString后就可以进行QString与QDateTime进行转换了,转换的方法如下:

》》 QDateTime 转换为 QString

函数原型:QString QDateTime::toString ( Qt::DateFormat format = Qt::TextDate ) const
QString str;
QDateTime time;
time = QDateTime::currentDateTime();
str = time.toString("yyyy-MM-dd hh:mm:ss");   // strBuffer = 2010-07-02 17:35:00


》》QString 转换为 QDateTime

函数原型:QDateTime QDateTime::fromString ( const QString & string, const QString & format ) [static]
QString str;
QDateTime time;
str = "2010-07-02 17:35:00";
time = QDateTime::fromString(strBuffer, "yyyy-MM-dd hh:mm:ss");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: