QString轉化為char 的方式

2022-03-25 12:53:31 字數 1031 閱讀 5908

qt幫助文件中給的乙個demo

qstring tmp = "

test";

qbytearray text =tmp.tolocal8bit();

char * pch = new

char[text.size()+1

];strcpy(pch, text.data());

delete data;

別的文章中也給出了一些方法

char *chstr =null;

qbytearray ba =str.tolatin1();

chstr = (char *)malloc(ba.length() + 1

); memset(chstr,

0, ba.length());

memcpy(chstr, ba.data(), ba.length());

chstr[ba.length()] = '

\0';

上面的**可以進一步優化

char *chstr =null;

qbytearray ba =str.tolatin1();

chstr = (char *)malloc(ba.length() + 1

); memset(chstr,

0, ba.length() + 1); //

既然分配了這麼多就全memset掉,官方幫助文件沒有使用memset,估計是它分配的記憶體全部給用上了。人家有這個自信~

memcpy(chstr, ba.data(), ba.length() + 1);//

既然ba.data()的最後也是『\0』,就直接全拷貝好了

ps:說到new之後memset,可以採用更簡單的方式來實現:

char *p = new

char[10]();

它等價於

char *p = new

char[10];

memset(p, 0, 10);

QString 向 char 的轉化

一 qstring 轉換為 char 將 qstring 轉 char 需要用到 qbytearray 類,qbytearray 類的說明詳見 qt 幫助文件。因為 char 最後都有乙個 0 作為結束符,而採用 qstring tolatin1 時會在字串後面加上 0 方法如下 qstring s...

把CString轉化為char

正確方法 cstring m head char codefile codefile lpstr lpctstr m head 正確,想辦法去掉字尾 補充 int fnlen m head.getlength strcspn str,codefile new char fnlen 4 codefil...

java 把char 轉化為int

首先說明一下問題由於某個專案的需求需要使用到 int 的陣列,由於資料最初是 string 型別的,為了方便就先把 string 型別的資料轉化成了 char 可是專案需要的是 int 的資料,所以還得把 char 轉化成 int 在轉化的過程中 1,變成了49,2變成了 50.考慮了很久才忽然想起...