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

Qt中 QString 和int, char等的“相互”转换

2014-04-01 11:31 651 查看
网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~

Qt中 int ,float ,double转换为QString

有两种方法

1.使用

QString::number();

如:

[cpp]
view plaincopyprint?

long a = 63;  
QString s = QString::number(a, 10);             // s == "63"  
QString t = QString::number(a, 16).toUpper();     // t == "3F"  

long a = 63;
QString s = QString::number(a, 10);             // s == "63"
QString t = QString::number(a, 16).toUpper();     // t == "3F"
(解释,变量a为int型或者float,double。10和16为进制) toUpper是大写

2.使用

[cpp]
view plaincopyprint?

long a = 63;  
QString s = QString("%1").arg(a);  

long a = 63;
QString s = QString("%1").arg(a);
这个嘛,我不常用

把QString转换为 double类型

方法1.

[cpp]
view plaincopyprint?

QString str="123.45";  
double val=str.toDouble(); //val=123.45  

QString str="123.45";
double val=str.toDouble(); //val=123.45


方法2.很适合科学计数法形式转换

[cpp]
view plaincopyprint?

bool ok;  
double d;  
d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  

bool ok;
double d;
d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.


 

把QString转换为float形

1.

[cpp]
view plaincopyprint?

QString str="123.45";  
float d=str.toFloat(); //d=123.45  

QString str="123.45";
float d=str.toFloat(); //d=123.45


2.

[html]
view plaincopyprint?

QString str="R2D2";  
bool ok;  
float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  

QString str="R2D2";
bool ok;
float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;


把QString形转换为整形

1.转换为十进制整形

注意:基数默认为10。当基数为10时,并且基数必须在2到36之

间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

[cpp]
view plaincopyprint?

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

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


3.常整形转换为Qstring形

[cpp]
view plaincopyprint?

long a =63;  
QString str=QString::number(a,16); //str="3f";  
QString str=QString::number(a,16).toUpper(); //str="3F";  

long a =63;
QString str=QString::number(a,16); //str="3f";
QString str=QString::number(a,16).toUpper(); //str="3F";



Qstring 转换char*问题!

方法一:

[cpp]
view plaincopyprint?

QString qstr("hello,word");  
const char * p = qstr.toLocal8Bit().data();  

QString qstr("hello,word");
const char * p = qstr.toLocal8Bit().data();


方法二:

[cpp]
view plaincopyprint?

const char *p = qstr.toStdString().data();  

const char *p = qstr.toStdString().data();


转换过来的是常量


把当前时间转化为QString...

public QDateTime qdate = QDateTime.currentDateTime();

datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");

如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类

QString Time2String( DWORD dwTime)

{

char cTime[50] = {0};

memset(cTime,0,50);

strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));

return QString(cTime);

}

qt QString 与char int double的转化(转载)

(2010-10-14 14:25:35)


转载▼

标签:

qstring

int

double

it

分类:QT
char * 与 const char *的转换

char *ch1="hello11";

const char *ch2="hello22";

ch2 = ch1;//不报错,但有警告

ch1 = (char *)ch2;

char 转换为 QString

其实方法有很多中,我用的是:

char a='b';

QString str;

str=QString(a);

QString 转换为 char

方法也用很多中

QString str="abc";

char *ch;

ch = str.toLatin1.data();

QByteArray 转换为 char *

char *ch;//不要定义成ch
;

QByteArray byte;

ch = byte.data();

char * 转换为 QByteArray

char *ch;

QByteArray byte;

byte = QByteArray(ch);

QString 转换为 QByteArray

QByteArray byte;

QString string;

byte = string.toAscii();

QByteArray 转换为 QString

QByteArray byte;

QString string;

string = QString(byte);

这里再对这俩中类型的输出总结一下:

qDebug()<<"print";

qDebug()<<tr("print");

qDebug()<<ch;(ch 为char类型)

qDebug()<<tr(ch);

qDebug()<<byteArray;(byteArray是QByteArray类型)

qDebug()<<tr(byteArray);

qDebug()<<str;(str 为Qstring类型)

但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:

qDebug()<<tr(str.toLatin1);

int 转 QString

int a=10;

QString b;

b=QString::number(a)

QString 转int

QString a="120"

int b;

b=a.toInt()
char * 与 const char *的转换

char *ch1="hello11";

const char *ch2="hello22";

ch2 = ch1;//不报错,但有警告

ch1 = (char *)ch2;

char 转换为 QString

其实方法有很多中,我用的是:

char a='b';

QString str;

str=QString(a);

QString 转换为 char

方法也用很多中

QString str="abc";

char *ch;

ch = str.toLatin1.data();

QByteArray 转换为 char *

char *ch;//不要定义成ch
;

QByteArray byte;

ch = byte.data();

char * 转换为 QByteArray

char *ch;

QByteArray byte;

byte = QByteArray(ch);

QString 转换为 QByteArray

QByteArray byte;

QString string;

byte = string.toAscii();

QByteArray 转换为 QString

QByteArray byte;

QString string;

string = QString(byte);

这里再对这俩中类型的输出总结一下:

qDebug()<<"print";

qDebug()<<tr("print");

qDebug()<<ch;(ch 为char类型)

qDebug()<<tr(ch);

qDebug()<<byteArray;(byteArray是QByteArray类型)

qDebug()<<tr(byteArray);

qDebug()<<str;(str 为Qstring类型)

但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:

qDebug()<<tr(str.toLatin1);

int 转 QString

int a=10;

QString b;

b=QString::number(a)

QString 转int

QString a="120"

int b;

b=a.toInt()


另一个

1 QString --> string

QString.toStdString();

2 string --> QString

QString::fromStdString(string)

3 QString --->int,double,char *

QString::toInt()

QString::toDouble()

QString.toStdString().c_str();

4 int double char* --->string

可以采用<sstream>里的stringstream

以int 为例,int a = 3;

stringstream ss;

string strInt;

ss<<a;

ss>>strInt;

其他两个一样。

================================

11、各种数据类型的相互转换

char * 与 const char *的转换

char *ch1="hello11";

const char *ch2="hello22";

ch2 = ch1;//不报错,但有警告

ch1 = (char *)ch2;

char 转换为 QString

其实方法有很多中,我用的是:

char a='b';

QString str;

str=QString(a);

QString 转换为 char

方法也用很多中

QString str="abc";

char *ch;

ch = str.toLatin1.data();

QByteArray 转换为 char *

char *ch;//不要定义成ch
;

QByteArray byte;

ch = byte.data();

char * 转换为  QByteArray

char *ch;

QByteArray byte;

byte = QByteArray(ch);

QString 转换为  QByteArray

QByteArray byte;

QString string;

byte = string.toAscii();

QByteArray 转换为  QString

QByteArray byte;

QString string;

string = QString(byte);

这里再对这俩中类型的输出总结一下:

qDebug()<<"print";

qDebug()<<tr("print");

qDebug()<<ch;(ch 为char类型)

qDebug()<<tr(ch);

qDebug()<<byteArray;(byteArray是QByteArray类型)

qDebug()<<tr(byteArray);

qDebug()<<str;(str 为Qstring类型)

但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:

qDebug()<<tr(str.toLatin1);

int  转 QString

int a=10;

QString b;

b=QString::number(a)

QString 转int

QString a="120"

int b;

b=a.toInt()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: