qt常用数据类型的转换

当我们用qt编写通信功能的时候,由于qt对数据类型进行了封装,常见的有QString、QByteArray、QChar等,而C/C++C常用的标准类型为int 、char、char *和String类(在c++ #include 中),所以就涉及

到了各种数据类型的转换,本文将对各种常见的数据类型的转换做一个总结:

一、数值类型和QString的相互转换

1、数值类型转QString

int m=1;
QString b;
b=QString::number(m)

说明:

标准函数为QString number(int n, int base = 10)

QString::number默认是10进制,但也可以转换为其他常用的进制类型。

qt常用数据类型的转换_第1张图片

里面也用到了重载函数,也可以用来将各种有符号和无符号数值转换为QString。

当然也可以将转换后的值设置为大小写,更多详细使用参考帮助文档。

2、QString转换为数值类型QStri也ng 转int
QString a="1111"
int b;
b=a.toInt()

标准函数为
int toInt(bool *ok = nullptr, int base = 10) 

ok表示转换结果,true为成功,false为失败。

base是转换的进制格式,默认为10进制。如果base为0,字符串以0x开头,以16进制转换;字符串以0开头,以8进制转换,其他以10进制转换。

参考文档的具体说明如下:

qt常用数据类型的转换_第2张图片

二、QString 与char * 相互转换

1、QString 转换为 char *

  将 QString 转 char *,需要用到 QByteArray 类

方法如下:

方法1:

  1. QString str;

  2. char* ch;

  3. QByteArray ba = str.toUtf8(); // must

  4. ch=ba.data();

  备注:有的说有中文的时候需要 用QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));设置编码,并且ba = str.tolocal8Bit();但用qt5实际测试的不需要。

  在“工具->选项 ->文本编辑器-> 行为中默认文件编码格式就是UTF-8,如果不是的改下即可。至于常用的编码格式会再下一篇文章介绍。

qt常用数据类型的转换_第3张图片

这样就完成了 QString 向 char * 的转化。

方法2:

  先将 QString 转为标准库中的 string 类型,然后将 string 转为 char *。如下: 

  1. QString filename;

  2. std::string str = filename.toStdString();

  3. const char* ch = str.c_str();

2、 char * 转换为 QString

  将 char * 转换为 QString 比较容易操作,我们可以使用 QString 的构造函数进行转换:

QString(const QLatin1String &str);

QLatin1String 的构造函数:  

QLatin1String(const char *str);

因此用下面这个语句就可以将 char * ch 转换为 QString str 了,如下:

str = QString(QLatin1String(ch));

三、char 转换为QString

1、char 转换为QString为 QString
char a='b';
QString str;
str=QString(a);Q

四、QString 与 string相互转换

1、QString转换为string

QString a;

string mystring = a.toStdString();//QString to string 

五、string转换为char *

strcpy(buff1, mystring.c_str());//string to char

六、QByteArray 与为char *相互转换

1、QByteArray 转换为char *

char *ch;//不要定义成ch[n];
QByteArray byte;
ch = byte.data();

2、char * 转换为  QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);

五、string与为QByteArra相互转换

1、QString 转换为  QByteArray
QByteArray byte;
QString string;
byte = string.toAscii();

2、QByteArray 转换为  QString
QByteArray byte;
QString string;
string = QString(byte);

 

QString string

你可能感兴趣的:(qt,数据类型,c++)