1樓:匿名使用者
char*轉換
qt下面,字串都用qstring,確實給開發者提供了方便,想想vc裡面定義的各種變數型別,而且函式引數型別五花八門,經常需要今年新那個型別轉換
qt再使用第三方開源庫時,由於庫的型別基本上都是標準的型別,字串遇的多的就是char*型別
在qt下怎樣將qstring轉char*呢,需要用到qbytearray類,qbytearray類的說明詳見qt幫助文件。
因為char*最後都有乙個『/0』作為結束符,而採用qstring::tolatin1()時會在字串後面加上『/0』
方法如下:
qstring str;
char* ch;
qbytearray ba = str.tolatin1();
ch=ba.data();
這樣就完成了qstring向char*的轉化。經測試程式執行時不會出現bug
注意第三行,一定要加上,不可以str.tolatin1().data()這樣一部完成,可能會出錯。
補充:以上方法當qstring裡不含中文時,沒有問題,但是qstring內含有中文時,轉換為char*就是亂碼,採用如下方法解決:
方法1:
新增gbk編碼支援:
#include
qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));
qtextcodec::setcodecforlocale(qtextcodec::codecforname("gbk"));
然後改變上面的第三行為:qbytearray ba = str.toloacl8bit(); toloacl8bit支援中文
方法2:
先將qstring轉為標準庫中的string型別,然後將string轉為char*,如下:
std::string str = filename.tostdstring();
const char* ch = str.c_str();
2樓:馮老師(必果學院
有兩種方式:
1 使用資料型別強制轉換,示例帶如下:
unsigned char s[100] = "abcdef";
int len = strlen((char*)s);
2 另外一種方式就是自己實現該方法,進行統計。
對於c/c++中的字串,必須是以'\0'結尾的,因此可以如下做int getlen(const unsigned char s)return nlen;}
js如何獲取值,JS如何獲取值
獲取jsfunction返回的值 1 首先,使用初始化 建立乙個新的html5檔案,如下所示。2 建立乙個新的h1標籤,以接收js中函式函式的返回值。3 建立新的指令碼標記並在標記中建立新函式。該函式返回值22。4 還在h1標記中建立了乙個新的指令碼標記,標記中的新str變數接收上述函式aa的返回值...
如何獲取android唯一標識,如何獲取Android唯一標識
核心 imei telephonymanager getsystemservice telephony service getdeviceid 在manifest.xml檔案中要新增 建立日期 2010 4 29 下午05 02 47 import android.os.bundle import ...
如何獲取dnf體驗服資格,如何獲取DNF體驗服資格?
班汀蘭榮子 注 請區別正式服客戶端,安裝於新目錄下。體驗服bug反饋專區 需用qq登陸 http gamebbs.qq.com cgi bin bbs show main?groupid 197 20002 盜夢語者 勸你別對體驗服報那麼高期望。第一,體驗服雖然無限疲勞,雙倍經驗,但是其實爆粉的機率...