分享

QT笔记之类型转换

 Runs丶SS11 2016-03-09

const
char* ip = NULL;
QString ip_qstring = NULL;

//获取IP, 从Qstring 到 const char* 的转换 ip_qstring = ui->cob_IP->currentText(); const QByteArray text = ip_qstring.toLocal8Bit(); ip = text.data();


QValidator *validator=new QIntValidator(0, 0xffff, this); //端口号0-0xffff ui->LE_port->setValidator(validator); //设置端口号只能输入0 - 0xffff之间的数值

port
= (unsigned short)ui->LE_port->text().toShort(); //获取端口号


1.QStringchar *

先将QString转换为QByteArray,再将QByteArray转换为char *

注意:不能用下面的转换形式char *mm = str.toLatin1().data();。因为这样的话,str.toLatin1()得到的QByteArray类型结果就不能保存,最后转换,mm的值就为空。

 

2. char * QString

可以使用QString的构造函数进行转换:QString(const QLatin1String &str);

QLatin1String的构造函数:QLatin1String(const char *str);

则如下语句是将char * mm转换为QString str

str = QString(QLatin1String(mm));


#include <QtGui/QApplication> 
#include <QtDebug> 
#include <QString> 
 
int main(int argc, char *argv[]) 

    QApplication a(argc, argv); 
 
    QString str = “hello”; //QString转char * 
     QByteArray ba = str.toLatin1(); 
    char *mm = ba.data(); 
    qDebug()<<mm<<endl;  //调试时,在console中输出 
 
      QString nn = QString(QLatin1String(mm)); //char *转QString 
    qDebug()<<nn<<endl;  //调试时,在console中输出 
 
    //MyClass w; 
    //w.show(); 
    return a.exec(); 


QByteArray 转换为 char *
char *ch;//不要定义成ch[n];
QByteArray byte;
ch = byte.data();
char * 转换为  QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);
先转成char,然后再转成unsigned char.

  • charunsigned char没有什么不同,都是一个字,唯一的区别是,char的最高位符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255.根据这个理解来转unsigned char就不会出错了
    • 本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多