1. 程式人生 > >常見的資料型別之間的轉換--Qt

常見的資料型別之間的轉換--Qt

前言

在專案中,經常用到一些基本資料型別之間的轉換,而記性越發不好的今天,只能每次都去請教度娘,這就很不好。故在此做一些總結,方便查閱。

介紹

在寫此文章時,查了一些資料,然後發現數據型別之間的轉換,也包含有一些之前沒注意過的細節,感覺頗有收穫。

int 轉char*

此型別之間的轉換,主要用到了兩個方法 itoasprintfitoa並不是一個標準的c函式,它是windows特有的(在Linux下的 stdlib.h 庫,其中沒有 itoa 函式),故建議用sprintf ,在Qt跨平臺時,就不需修改。下面對這兩個方法進行詳細的介紹。

itoa(int value,char* buffer,radix)

,此函式有三個引數,value需轉換整型,buffer目標字串,radix數字轉換的基數。

    char sz_id[256];
    int id=obj.value("id").toInt();
    itoa(id,sz_id,10);
    int id=17;
    char sz_id[256];
    sprintf(sz_id,"%d",id);

QString 轉char*

此型別在轉換時,要格外注意中文的轉換,必須將其轉化為utf8編碼,不然則會亂碼。如下:

    QString str=QString::fromLocal8Bit("你好");
    QByteArray byte=str.toUtf8();
    char* data=byte.data();

char* 轉QString

  直接轉換即可。

    char* data="hello";
    QString str(data);

QString轉字元陣列char[]

  此型別轉換要使用

char *strcpy(char* dest, const char *src)

把從src地址開始且含有NULL結束符的字串複製到以dest開始的地址空間,注意srcdest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

    char data[10];
    QString str("hello");
    strcpy(data,str.toLocal8Bit().data());

結束語

很多時候,我們總是關注整體,而不在乎細節,但是要記住,大船總是在陰溝裡翻船,我們不要在洗臉盆裡淹死。。。