Qt 中各种常用数据类型转换

这次在Qt 写程序的过程踩坑最多就是数据类型转换了,千万不要轻易相信强制转换时编译器的容错性,很多时候不是断点下来看出问题都是莫名奇妙的。我遇到的需要转换主要有 int 与QString 的互转、QString 与 char* 间的互转。QByteArray 与 QString之间的互转( 这个在输出JSON 、或调用外部接口用得最多 )


典藏代码如下:

//QString --> string
QString.toStdString();

//string --> QString
QString::fromStdString(string)

//QString --->int,double,char *
QString::toInt()
QString::toDouble()
QString.toStdString().c_str();

//int double char* --->string
//可以采用<sstream>里的stringstream
//以int 为例,//其他两个一样。
int a = 3;
stringstream ss;
string strInt;
ss<<a;
ss>>strInt;


//int double char*装QString
//一种方法可以先转string,再转QString。另一种方法可以查看QString类的函数。
QString::number()这个静态函数,参数可以是int,也可以是double。

//double int的互转
//可采用static_cast

//int->char*
char a[6];
sprintf(a,"A.%d",i++)
//输出形势为:A.1 A.2 A.3

//各种数据类型的相互转换
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[n];
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()