当我们用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进制,但也可以转换为其他常用的进制类型。
里面也用到了重载函数,也可以用来将各种有符号和无符号数值转换为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进制转换。
参考文档的具体说明如下:
二、QString 与char * 相互转换
1、QString 转换为 char *
将 QString 转 char *,需要用到 QByteArray 类
方法如下:
方法1:
QString str;
char* ch;
QByteArray ba = str.
toUtf8(); // must
ch=ba.data();
备注:有的说有中文的时候需要 用QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));设置编码,并且ba = str.
tolocal8Bit();但用qt5实际测试的不需要。
在“工具->选项 ->文本编辑器-> 行为中默认文件编码格式就是UTF-8,如果不是的改下即可。至于常用的编码格式会再下一篇文章介绍。
这样就完成了 QString 向 char * 的转化。
方法2:
先将 QString 转为标准库中的 string 类型,然后将 string 转为 char *。如下:
QString filename;
std::string str = filename.toStdString();
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