QT下圍繞QString的資料轉換

2021-06-26 20:13:56 字數 3188 閱讀 4622

方法一:

qstring::number();

long a = 48;

qstring s = qstring::number(a, 10); // s == "48"

qstring t = qstring::number(a, 16).toupper(); // t == "30"

qstring str=qstring::number(a,2); //str == 00110000

(解釋,變數a為int型或者float,double。10和16,2為進製) toupper是大寫

方法二:

long a = 63;  

qstring s = qstring("%1").arg(a);

注意:定義是 char *p,而非char p[ ]

方法一:   

qstring qstr("hello,word");  

const char * p = qstr.tolocal8bit().data();

方法二:  

const char *p = qstr.tostdstring().data();

方法三:

qbytearray ba = qstr.tolatin1();

char *ch = ba.data();

注意第2行,一定要加上,不可以qstr.tolatin1().data()這樣一步完成,可能會出錯

補充:以上方法當qstring裡不含中文時,沒有問題,但是qstring內含有中文時,轉換為char*就是亂碼,採用如下方法解決:

方法一:

新增gbk編碼支援:

#include qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));

qtextcodec::setcodecforlocale(qtextcodec::codecforname("gbk"));

然後改變上面方法三的第1行為:qbytearray ba = qstr.toloacl8bit(); //toloacl8bit支援中文

方法二:

先將qstring轉為標準庫中的string型別,然後將string轉為char*,如下:

std::string str = qstr.tostdstring();

const char* ch = str.c_str();

qstring qstr("hello,word");  

qbytearray ba = qstr.tolatin1();

char *ch = ba.data();

char product[10];

for( int i=0; i<10; i++)

四、把qstring轉換為 double型別

方法一:

qstring str="123.45";  

double val=str.todouble(); //val=123.45

方法二:很適合科學計數法形式轉換

bool ok;  

double d;

d=qstring("1234.56e-02").todouble(&ok); //ok=true;d;12.3456.

方法一:

qstring str="123.45";  

float d=str.tofloat(); //d=123.45

方法二:

qstring str="abc";  

bool ok;

float d=str.tofloat(&ok); //轉換是被時返回0.0,ok=false;

注意:基數預設為10。當基數為10時,並且基數必須在2到36之間。

如果基數為0,若字串是以0x開頭的就會轉換為16進製制,若以0開頭就轉換為八進位制,否則就轉換為十進位制。 

qstring str="ff";  

bool ok;

int dec=str.toint(&ok,10); //dec=255;ok=rue

int hex =str.toint(&ok,16); //hex=255;ok=true;

方法一:   

qbytearray byte_head=qstring(str_head);

方法二:   

qbytearray byte_head=str_head.tolatin1();

1、將int型(double型)轉換為qbytearray型:

qbytearray byte_head;

int int_head = 90;

memcpy(byte_head.data(),&int_head,sizeof(int_head));

這裡使用記憶體複製函式memcpy將int型別複製到qbytearray位元組型別

2、time_t to qstring轉化

qint32 num = time(null);

qstring time = qstring(num);

3、time_t轉化為固定格式的qstring       

time_t timemsg = time(null);

struct tm *tt;

tt = localtime(&timemsg);

char str[32];

strftime(str, 32 , "%f/%t", tt);//例2014-02-12/13:20:34

qstring currenttime = qstring(str);

Qt中QString的比較

一般情況下,我們會使用compare來進行比較,具體的返回結果如下 qstring compare ab ab 值為0 qstring compare ab df 值為 0 qstring compare df ab 值為 0 使用這個函式時可以新增第三個引數 qstring compare df ...

Qt下的QString與數字的相互轉化

2011 12 28 20 36 29 分類 qt 標籤 字型大小 大中小訂閱 把qstring轉換為 double型別 方法1.qstring str 123.45 double val str.todouble val 123.45 方法2.很適合科學計數法形式轉換 bool ok double...

Qt 的QString類的使用

qt的qstring類提供了很方便的對字串操作的介面。使某個字元填滿字串,也就是說字串裡的所有字元都有等長度的ch來代替。qstring fill qchar ch,int size 1 例 qstring str berlin str.fill z str zzzzzz str.fill a 2 ...