常見的資料型別之間的轉換--Qt
阿新 • • 發佈:2018-12-19
前言
在專案中,經常用到一些基本資料型別之間的轉換,而記性越發不好的今天,只能每次都去請教度娘,這就很不好。故在此做一些總結,方便查閱。
介紹
在寫此文章時,查了一些資料,然後發現數據型別之間的轉換,也包含有一些之前沒注意過的細節,感覺頗有收穫。
int 轉char*
此型別之間的轉換,主要用到了兩個方法 itoa 和 sprintf 。itoa並不是一個標準的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開始的地址空間,注意:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。
char data[10]; QString str("hello"); strcpy(data,str.toLocal8Bit().data());
結束語
很多時候,我們總是關注整體,而不在乎細節,但是要記住,大船總是在陰溝裡翻船,我們不要在洗臉盆裡淹死。。。